PyGTK - 事件处理

  • 简述

    除了信号机制,窗口系统事件还可以连接回调函数。窗口大小调整、按键、滚动事件等是一些常见的窗口系统事件。这些事件被报告给应用程序的主循环。从那里,它们通过信号传递给回调函数。
    下面列出了一些系统事件-
    • button_press_event
    • button_release_event
    • scroll_event
    • motion_notify_event
    • delete_event
    • destroy_event
    • expose_event
    • key_press_event
    • key_release_event
    connect() 方法用于将事件与回调函数相关联,语法如下 -
    
    Object.connect(name, function, data)
    
    这里,name 代表要捕获的事件名称对应的字符串。而且,function 是事件发生时要调用的 callback 函数的名称。数据是要传递给回调函数的参数。
    因此,以下代码连接一个 Button 小部件并捕获 button_press 事件 -
    
    self.btn.connect("button_press_event", self.hello)
    
    以下将是 hello() 函数的原型 -
    
    def hello(self,widget,event):
    
  • 示例

    以下是按钮事件处理程序的代码 -
    
    import gtk
    class PyApp(gtk.Window):
       def __init__(self):
          super(PyApp, self).__init__()
          self.set_title("Hello World in PyGTK")
          self.set_default_size(400,300)
          self.set_position(gtk.WIN_POS_CENTER)
          
          self.label = gtk.Label("Enter name")
          self.entry = gtk.Entry()
          self.btn = gtk.Button("Say Hello")
          self.btn.connect("button_press_event", self.hello)
          
          fixed = gtk.Fixed()
          fixed.put(self.label, 100,100)
          fixed.put(self.entry, 100,125)
          fixed.put(self.btn,100,150)
          
          self.add(fixed)
          self.show_all()
          
       def hello(self,widget,event):
          print "hello",self.entry.get_text()
    PyApp()
    gtk.main()
    
    当您运行上述代码时,它会在控制台上显示以下输出 -
    
    你好菜鸟教程