• 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具有的属性列表。

  • 相关阅读:
    47.一个h5画板
    46.纯css实现瀑布流(flex)
    45.使用webpack,react,redux搭俩个界面
    44.一个这样的datePicker
    43.关于浮点数的乘除法预算误差,一个看似没什么问题的解决方法
    iOS10 NSBundle
    iOS09-NSUserDefault
    iOS08 页面跳转动画设置方法
    iOS07 键盘弹出,回收,位置
    iOS06 NSTimer 详细设置1
  • 原文地址:https://www.cnblogs.com/feipeng8848/p/12869313.html
Copyright © 2020-2023  润新知