当前位置:  开发笔记 > 编程语言 > 正文

使用libglade转换为GtkBuilder有哪些步骤?(蟒蛇)

如何解决《使用libglade转换为GtkBuilder有哪些步骤?(蟒蛇)》经验,为你挑选了2个好方法。

我有一个使用libglade的小项目,并使用以下内容加载xml文件:

self.gladefile = "sdm.glade"
self.wTree = gtk.glade.XML(self.gladefile) 
self.window = self.wTree.get_widget("MainWindow")
if (self.window):
    self.window.connect("destroy", gtk.main_quit)
dic = { "on_button1_clicked" : self.button1_clicked, 
        "on_MainWindow_destroy" : gtk.main_quit}
self.wTree.signal_autoconnect(dic)

在林间空地转换我的项目后,我需要做出哪些结构性变化?我在Ubuntu 9.04上.



1> Torsten Mare..:

你需要gtk.Builder改用.此类可以加载任意数量的UI文件,因此您需要手动添加它们,无论是文件还是字符串:

self.uifile = "sdm.ui"
self.wTree = gtk.Builder()
self.wTree.add_from_file(self.uifile)

而不是get_widget,只需get_object在构建器类上使用:

self.window = self.wTree.get_object("MainWindow")
if self.window:
    self.window.connect("destroy", gtk.main_quit)

要连接信号,只需使用connect_signals,这也需要字典:

dic = { "on_button1_clicked" : self.button1_clicked, 
    "on_MainWindow_destroy" : gtk.main_quit}
self.wTree.connect_signals(dic)

曾经是这种情况(至少在GTK + 2.12中,不确定它是否仍然相同),你只能调用connect_signals一次,在第一次调用期间没有连接的任何信号永远不会被连接.这在林间空地中是不同的,所以如果您之前依赖于该功能,请务必小心.



2> rcriii..:

托尔斯滕的答案是正确的,但有点不完整,所以本着http://xkcd.com/979/的精神, 这是我最近在经过多次试错之后确定的程序:

在Glade界面设计器中打开yada.glade.转到edit-> project并将项目类型更改为GtkBuilder,并确保它以最新版本为目标(截至本文撰写时为2.24).保存文件,确保以GtkBuilder格式保存,并将名称从yada.glade更改为yada.ui

打开yada.py并更改以下代码:

gladefile = relativize_filename(os.path.join("glade", "yada.glade"))
self.wTree = gtk.glade.XML(gladefile, self.windowname)

至:

uifile = relativize_filename(os.path.join("glade", "yada.ui"))
self.wTree = gtk.Builder()
self.wTree.add_from_file(uifile)

同样改变self.wTree.get_widget(...)to的所有实例self.wTree.get_object(...)

更改self.wTree.signal_autoconnect(dic)self.wTree.connect_signals(dic)

如果您的代码取决于界面设计器中指定窗口小部件的名称,请更改widget.get_name()gtk.Buildable.get_name(widget). widget.get_name()现在只返回小部件类型.编辑:您还需要更改widget.set_name('my_widget')gtk.Buildable.set_name(widget, 'my_widget').

删除 import gtk.glade

我发现在yada.ui xml文件中定义了许多未使用的信号,我不得不打开xml文件并手动删除它们以消除它们引起的警告.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有