Python GTK + 3教程 学习笔记 ——(3)基础

主循环和信号

像大多数GUI工具包一样,GTK+使用事件驱动的编程模型。当用户什么都不做时,GTK+会坐在主循环中并等待输入。如果用户执行某些操作(例如,单击鼠标),则主循环“醒来”,并将事件传递给GTK+。
当Gtk.Widget接收到事件时,它们经常发出一个或多个信号。信号通过调用已连接到信号的函数来通知程序“发生了一些有趣的事情”。此类函数通常称为回调。调用回调时,通常会采取一些措施-例如,单击“打开”按钮时,可能会显示一个文件选择器对话框。回调完成后,GTK+将返回主循环并等待更多用户输入。

一个通用的示例是:

handler_id = widget.connect("event", callback, data)

上述代码连接了信号event和处理方法callback,callback的参数是data
首先,widget是我们之前创建的widget的一个实例。
接下来,我们感兴趣的事件。每个小部件都有其自己可能发生的特定事件。例如,如果您有一个按钮,通常希望连接到“clicked”事件。这意味着当单击按钮时,将发出信号
第三,callback参数是回调函数的名称。它包含在发出指定类型的信号时运行的代码。
最后,data参数包含发出信号时应传递的任何数据。但是,此参数是完全可选的,如果不需要,可以将其省略。
另外handler_id可以用于断开与信号的连接widget.disconnect(handler_id)

如果由于某种原因丢失了“handler_id”(例如,使用来安装处理程序Gtk.Builder.connect_signals()),您仍然可以使用函数断开特定的回调disconnect_by_func()

widget.disconnect_by_func(callback)

应用程序应连接到顶层窗口的“destroy”信号。当销毁一个对象时会发出该消息,因此当用户请求关闭顶级窗口时,此信号的默认处理程序将销毁该窗口,但不会终止应用程序。将顶层窗口的“销毁”信号连接到该功能Gtk.main_quit()将导致所需的行为。

window.connect("destroy", Gtk.main_quit)

调用Gtk.main_quit()使主循环Gtk.main()返回return

Gtk.main_quit()方法可以从GTK的文档 https://lazka.github.io/pgi-docs/Gtk-3.0/index.html 中找到,在API分类下的Functions。

属性

属性描述窗口小部件的配置和状态。至于信号,每个窗口小部件都有其自己的特定属性集。例如,按钮具有“标签”属性,其中包含按钮内部的标签小部件的文本。创建小部件的实例时,可以将任意数量的属性的名称和值指定为关键字参数。要创建一个与文本“ Hello World”和25度角向右对齐的标签,请使用:

label = Gtk.Label(label="Hello World", angle=25, halign=Gtk.Align.END)

相当于

label = Gtk.Label()
label.set_label("Hello World")
label.set_angle(25)
label.set_halign(Gtk.Align.END)

除了使用getter和setter之外,您还可以通过“ props”属性(例如 widget.props.prop_name = value)获取和设置gobject属性。这相当于widget.get_property("prop-name")widget.set_property("prop-name", value)
要查看正在运行的GTK版本中的窗口小部件可以使用哪些属性,可以“dir”一下“props”属性:

widget = Gtk.Box()
print(dir(widget.props))

这将在控制台中打印Gtk.Box具有的属性列表。

原文地址:https://www.cnblogs.com/feipeng8848/p/12869313.html