【问题标题】:Problems around Gtk and PyGtkGtk 和 PyGtk 的问题
【发布时间】:2014-04-10 17:04:15
【问题描述】:

在代码文件中,我只需要链接一个库(from gi.repository import Gtk)。 但是当我运行它时,它会回复我:

Gtk-WARNING **:未知属性:GtkTextView.input-purpose

错误 --file: collega_GUI --riga: 160, 'Grid' 对象没有属性 'get_child_at'

所以我试图找到丢失的库

$ dpkg -l libgtk[0-9]* | grep ^i

ii  libgtk2.0-0    2.24.10-0ubuntu6    GTK+ graphical user interface library
ii  libgtk2.0-bin  2.24.10-0ubuntu6    programs for the GTK+ graphical user interface library
ii  libgtk2.0-common  2.24.10-0ubuntu6     common files for the GTK+ graphical user interface library
ii  libgtk2.0-dev  2.24.10-0ubuntu6    development files for the GTK+ library

而Grid对象需要gtk3+,所以我们来安装它

$ sudo apt-get install libgtk-3-0 libgtk-3-common libgtk-3-dev libgtk-3-doc

0 updated, 0 installed, 0 removed and 0 not upgraded

所以,图书馆一切都很好,并且:

  1. gtk-grid-get-child-at 存在

  2. GtkTextView--input-purpose 存在

  3. “输入目的”问题很奇怪,因为在以前的操作系统上(ubuntu 13.10,现在我在 12.04)我没有遇到这个问题。

用户界面是由 Glade 构建的,但我以前从未遇到过该错误:在相同的项目文件上,但在不同的操作系统版本上。

我还是觉得我需要安装一些库。

EDIT :: ged_child_at 函数调用

griglia = self.__builder.get_object('grid3')
                for i in range(0, 3):
                    area = griglia.get_child_at(i, 0)
                    self.__builder.get_object(Gtk.Buildable.get_name(area)).connect("draw", self.draw)

【问题讨论】:

标签: grid gtk pygtk gtk3 glade


【解决方案1】:

The tag Since 3.6 表示该属性,这意味着 Gtk+ 3.4(如果我没记错的话,这是 ubuntu 12.04 的默认值)。

因此,您要么解决它,要么采取升级到Gtk+ 3.6 的棘手方法——我 - 恕我直言 - 强烈反对 - 特别是因为 Unity 需要将各种补丁合并到 Gtk+ 中才能正常工作。


我刚刚签入 gtk+-3.10.x,python 绑定很好,包括get_child_at(..)

This question 包含一个答案,实际上这是gtk+ 3.4 的python 绑定中的一个错误。

解决方案:向后移植修复此问题的 git 提交(应该是非常小的 git 提交)重新编译/创建 deb 包(需要大量知识)。

另一种方法是在本地修复绑定规范并在本地重新创建 python 自省绑定 - 但不确定这是否可能 - 从未这样做过。

【讨论】:

  • 我该怎么做才能解决?使用表格而不是网格?但是我可以简单地从存储库下载 gtk+3.6 而不更新 gtk+3.4 吗? Unity 可以在 gtk+3.4 下运行良好,而我的程序也可以在 gtk+3.6 下运行
  • OH WAIT:我只是收到 "input-purpose" 属性的警告,实际上我并不关心它。但是我的程序因 'Grid' 对象没有属性 'get_child_at' 而失败:但是 此属性可从 gtk+3.2 获得。而Ubuntu 12.04自带gtk+3.4,问题出在哪里?
  • 你能从你的 glade 文件中显示一些代码和 xml 吗?不幸的是,我的水晶球现在坏了。
  • 它在C 中可用,因此它应该在python 中也可用,但这似乎是@ptomato 指出的错误:stackoverflow.com/questions/12541328/…
  • 我刚刚签入了 gtk+-3.10.x,python 绑定是固定的(即get_child_at 有一个 gi 包装器)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 2011-10-15
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多