我是Python和OOP的新手,需要一个示例脚本来了解gtk.builder对象和window对象之间的关系。我正在使用gnome-builder入门。
我想要的是从Builder(或Glade)生成的xml中加载gui定义:真的很简单:
具有按钮和标签的窗口。单击按钮时,标签将显示或隐藏。但是,标签(显示时)应该是连续变化的随机字母。
以下代码来自Gnome构建器hello世界,其中gui已更改为我的需求。
main.py:
s.privateMethod()
window.py:
import sys
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gio
from .window import TestWindow
class Application(Gtk.Application):
def __init__(self):
super().__init__(application_id='test',
flags=Gio.ApplicationFlags.FLAGS_NONE)
def do_activate(self):
win = self.props.active_window
if not win:
win = TestWindow(application=self)
win.present()
def main(version):
app = Application()
return app.run(sys.argv)
window.ui:
from gi.repository import Gtk
@Gtk.Template(resource_path='/test/window.ui')
class TestWindow(Gtk.ApplicationWindow):
__gtype_name__ = 'TestWindow'
label = Gtk.Template.Child()
def __init__(self, **kwargs):
super().__init__(**kwargs)
答案 0 :(得分:0)
我假设您正在使用Gnome构建器来构建您的应用程序。为了将处理程序连接到按钮,您应该在按钮上添加<signal name="clicked" handler="handler_name" />
。
http://www.learningpython.com/2006/05/07/creating-a-gui-using-pygtk-and-glade/
这是指向将pygtk与glade一起使用的教程的链接,该教程主要适用于您使用的框架
这是我的window.py文件中的代码块,该文件将VisitFaq按钮连接到其处理程序
@Gtk.Template(resource_path='/edu/umich/help/window.ui')
class HelpWindow(Gtk.ApplicationWindow):
__gtype_name__ = 'HelpWindow'
VisitFaq = Gtk.Template.Child()
ChatButton = Gtk.Template.Child()
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.ChatButton.connect('clicked', self.start_chat)
def start_chat(self):
这是VisitFaq在ui文件中的外观
<object class="GtkButton" id="VisitFaq">
<property name="label" translatable="yes">Visit the FAQ</property>
<property name="name">FaqButton</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="visit_faq" />
</object>