围绕Gtk和PyGtk的问题

时间:2014-04-10 17:04:16

标签: grid gtk pygtk gtk3 glade

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

  

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

     

ERROR --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

和网格对象需要 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上) 我没有得到问题

  4. 用户界面由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)
    

1 个答案:

答案 0 :(得分:0)

该属性的

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绑定中的一个错误。

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

另一种方法是在本地修复绑定规范并在本地重新创建python内省绑定 - 不确定这是否可行 - 从来没有这样做。