美文网首页
Python GTK 3 GUI 编程 -- 004 信号机制(

Python GTK 3 GUI 编程 -- 004 信号机制(

作者: bokerr | 来源:发表于2020-12-02 11:00 被阅读0次

    今天讲解 信号机制, 和众多gui开发工具一样, gtk也是信号驱动型.
    每对控件的一次交互, 就发出一个信号, 比如, 点击Button, 发出Clicked (其实是 Pressed, Released两个信号)
    所以可以通过信号机制来对每一次信号作出回应, 指调用某个函数
    在pygobject中可以通过Gtk.Widget.connect("Signal", Function)来处理信号, 比如下面的例子

    import gi
    gi.require_version("Gtk", "3.0")
    
    from gi.repository import Gtk
    
    
    class MyWindow(Gtk.Window):
        def __init__(self):
            super(MyWindow, self).__init__(title="Signal")
    
            self.btn = Gtk.Button(label="Click Me")
            self.add(self.btn)
    
            self.btn.connect("clicked", self.on_click) #处理click信号, 调用on_click函数
    
        def on_click(self, widget): # 信号会自动把当前控件当作参数传入
            print("I got clicked")
    
    
    win = MyWindow()
    win.connect("destroy", Gtk.main_quit) # 处理destroy 信号, 当窗口关闭, 调用主退出函数
    win.show_all()
    Gtk.main()
    
    Click

    上面说过, def on_click(self, widget): ... 里面的widget就是发出信号的控件
    所以可以直接使用, 来修改该控件的属性比如

    def on_click(self, widget):
        widget.set_label("I Got Clicked") 
    

    信号可以直接在 glade里面找到, (glade=> Gtk的gui创建工具安装方法自行百度)

    Glade

    常见的信号
    enter
    leave
    clicked
    destroy
    focused_in
    focused_out
    add
    remove
    具体的可以在glade里面查

    下篇文章讲下 盒子(Box)

    相关文章

      网友评论

          本文标题:Python GTK 3 GUI 编程 -- 004 信号机制(

          本文链接:https://www.haomeiwen.com/subject/wvyywktx.html