我似乎无法使用gintrospection让cairo区域在内部工作.
例如
from gi.repository import cairo
reg = cairo.Region()
Run Code Online (Sandbox Code Playgroud)
会给我的
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
MemoryError
Run Code Online (Sandbox Code Playgroud)
并试图从Gdk.get_clip_region()获得一个区域将给我
return info.invoke(*args)
TypeError: Couldn't find conversion for foreign struct 'cairo.Region'
Run Code Online (Sandbox Code Playgroud)
我错过了什么明显的事情?我无法找到一种方法来使用它,并且无法想象你需要的区域看起来像一个简单的结构.我不知道为什么gdk找不到cairo类型,并且我不知道我是否应该以某种方式显示它.
我正在尝试用Python开发一个GTK应用程序,我真的很难正确使用a gtk.TreeStore.我的主要问题:我已经解析了一些JSON,我有自己的数据结构,它基本上是一个Python列表和两种对象:一个表示项目集合(集合不能嵌套)和一个表示项目(它可能出现在列表和集合中).
我已经熟悉a的基本用法,TreeStore并设法在屏幕上正确呈现项目.我不知道如何处理树存储只能存储gobject类型的事实(此时我不确定因为我对gobject类型系统知之甚少).C的文档列出了以下(PixBuf除外)基本类型,它们可以插入并自动映射到Python数据类型:
例如,gtk_tree_store_new(3,G_TYPE_INT,G_TYPE_STRING,GDK_TYPE_PIXBUF); 将创建一个新的GtkTreeStore,它有三列,分别是int,string和GdkPixbuf.
此外,它说你可以插入任何GType.文件中的链接直接指向本段:
表示注册类型的唯一标识符的数值.
我的话题的研究在这里结束与谷歌发现有关将其他数据类型的不同之处主要是GTK 2.x的教程,并没有str和int等
问题:
是否有可能实现一个新的GType(或任何其它接口,将在treestore可能使插入自定义数据),以及如何做到这一点?
我已经尝试过,GObject但它没有帮助.
如何摆脱同时保留两个数据结构?
即我的解析结果和Treestore中的重复信息.
如何处理混合内容?
在我的例子中,我有集合和具有不同附加信息的项目(在树视图中镜像为带或不带子项的节点).
如果上面的问题得到解决,我在处理选择时也会解决问题:很难匹配一个简单的类型,str或者int匹配我之前插入的项目.这样的属性必须是一个密钥,你仍然可以使用已解析的结果搜索列表,这会导致无效.
先感谢您!
与该问题无直接关系的其他信息:
TreeModel在我阅读GTK 2教程之前,我认为实现自定义可能是一个可行的挑战:
但是,所有这些都需要付出代价:除非您删除所有换行符,否则不太可能在不到一千行中编写有用的自定义模型.编写自定义模型并不像听起来那么困难,并且它可能值得付出努力,尤其是因为如果您需要跟踪大量数据,它将导致更加安全的代码.
这仍然有效吗?
我刚刚遇到http://www.pygtk.org/articles/subclassing-gobject/sub-classing-gobject-in-python.htm这有用吗?对于PyGTK 2.0来说,有很多资源.弃用.
在阻止实例的处理程序之后g_signal_handler_block,是否可以检查处理程序是否仍然被阻塞或者同时被g_signal_handler_unblock解除阻塞,除了将状态存储在布尔变量中之外?
我希望这样的事情是可能的
g_signal_handler_block (selection, handler_id_row_selected);
if (g_signal_handler_is_blocked (selection, handler_id_row_selected))
g_print ("is still blocked");
Run Code Online (Sandbox Code Playgroud)
但是一个"g_signal_handler_is_blocked"功能不存在.g_signal_handler_is_connected由于信号处理程序保持连接,因此函数返回TRUE,因此不是正确的函数.
我试过g_signal_handler_find (),因为有G_SIGNAL_MATCH_UNBLOCKED一种匹配类型,但它还没有工作.即使我已经重写了我的代码,我仍然想知道它是否可能,因为我相对经常使用阻塞/解除阻塞.
Vala生成的代码是否像普通的手写C代码一样进行了优化?使用GObject系统而不使用它有任何性能开销吗?
注意:在我的下一个C项目中,我正在研究是否使用Vala.该项目不是GUI应用程序,它是一种解释器类型的应用程序,必须与平台无关.我使用gcc作为编译器.
我刚刚为我的debian machiene编译了exiv2和gexiv2,现在我想开始使用gexiv2来编译使用python的IPTC数据.gexiv2网站提供以下代码:
from gi.repository import GExiv2
Run Code Online (Sandbox Code Playgroud)
但这已经导致:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named gi.repository
Run Code Online (Sandbox Code Playgroud)
我甚至不能导入gi所以我想我错过了另一个包!?我该怎么做才能使这项工作符合预期?
更新:我将操作系统升级到最新的debian版本.我现在可以导入gi,但是我仍然遇到GExiv2的问题.
导入GExiv2时发生以下错误:
>>>from gi.repository import GExiv2
ERROR:root:Could not find any typelib for GExiv2
Run Code Online (Sandbox Code Playgroud) 我在python中写openweathermap网站appindicator,但我只需要指针中没有图标的文字标签.但是当我离开""然后给我看空图标.为什么,我只需要文字.在Ubuntu 12.04中,python-appindicator不需要图标如果离开""然后不加载空图标,但在ubuntu 14.04中留下空图标.如何禁用图标?有任何想法吗?
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import urllib2
import json
import time
import datetime
from gi.repository import Gtk, Gdk, GLib, GObject
from gi.repository import AppIndicator3 as appindicator
class programa:
def __init__(self):
# Create Indicator with icon and label
# If leave empty "" then load empty icon
self.ind = appindicator.Indicator.new("Weather","",appindicator.IndicatorCategory.APPLICATION_STATUS)
self.ind.set_status(appindicator.IndicatorStatus.ACTIVE) #
self.menu_structure()
# Menu structure
def menu_structure(self):
refresh = 720 # Refresh interval in seconds
url = urllib2.Request('http://api.openweathermap.org/data/2.5/weather?q=siauliai&units=metric')
openup = urllib2.urlopen(url) …Run Code Online (Sandbox Code Playgroud) 我理解GObject是作为gtk +的一部分开始的,后来又与GUI相关的元素分开了.我想知道的是:它在gtk +之外使用?那么其他桌面环境以及Windows或Mac OS等其他操作系统呢?这类案件有哪些突出的例子?
我尝试使用此处提供的 Windows 安装程序安装 PyGI:http : //sourceforge.net/projects/pygobjectwin32/files/? source=navbar
我在 Windows 7 x64 上使用 Python 3.3。
安装程序开始并说找不到可用的 Python 安装。安装程序邀请我手动选择 python 安装路径,但即使我选择了我的“C:\Python33”路径,它也会继续说“找不到兼容的 Python”。
我首先认为 Python 3 不受支持……即使我选择了“C:\Python27”路径,也没有任何变化。
任何的想法 ?我搜索了有关此错误的一些信息,但没有找到任何内容... :(
请帮忙!谢谢 :)
我无法从gi.repository导入模块.特别是不是Gtk和GObject.
我在Ubuntu 14.04 LTS和Linux Mint 17上重新安装后都遇到了这个错误.
from gi.repository import Gtk, GObject
Run Code Online (Sandbox Code Playgroud)
导致各个模块的"未解决的参考"警告.有趣的是,我的Gtk GUI可以编译并且工作得很好.然而,GObject完全没有功能.
我试图改变导入语句,例如:
from gi.repository.Gtk import*
Run Code Online (Sandbox Code Playgroud)
甚至通过以下硬编码导入路径:
sys.path.append('/usr/lib/python2.7/dist-packages/gi')
Run Code Online (Sandbox Code Playgroud)
到目前为止,这些方法都没有解决这个令人沮丧的错误.
我没有在这个问题上找到任何结论性的帮助或基本信息,无论是在网络上还是在Linux论坛上,或者在stackoverflow上.我不确定这个问题是存在于Python还是Linux方面.
任何人都可以建议如何解决这个问题? 我最终需要提供哪些附加信息.
谢谢!
您好,我正在制作一个 Gtk 应用程序,需要运行一个代码来获取系统中所有已安装字体的列表,以使用它来创建一个类似于 Gtk.FontChooserWidget 的列表,Gtk 中是否有任何内置函数可以做这个 ?