Gtk开关激活信号未触发

6 gtk events gobject pygobject

我正在尝试在应用程序中使用Gtk.Switch小部件,但"激活"信号不会通过点击触发.通过点击其上的reture/space键,使用带键盘的小部件时,它可以正常工作,但点击不会触发"激活"事件.

任何想法要为Gtk.Switch的点击注册信号要做什么

from gi.repository impoty Gtk, GObject

def my_callback(widget, data=None):
    print 'Event Fired'

switch = Gtk.Switch()
window = Gtk.Window()
window.add(switch)
switch.connect('activate', my_callback)
window.show_all()
GObject.MainLoop().run()
Run Code Online (Sandbox Code Playgroud)

Kkn*_*knd 15

实际上,更好的方法是连接到notify :: active事件.

  • glade用户注意:我花了很长时间来计算如何为"listen :: active"注册一个处理程序,所以这可能对其他glade用户有用.如果您正在使用glade,您会注意到信号列表中似乎没有"notify :: active",这是因为它是一个GObject信号"listen",使用"Detail"列添加第二个参数"active"为"listen :: active"注册处理程序. (5认同)

小智 -1

好吧,在环顾了几天之后,我在这里提出了这个问题,并在 5 分钟后找到了答案。

要注册鼠标单击,必须使用“按钮按下事件”信号而不是“激活”信号。

可能会帮助有类似问题的人。

GTK 需要更好的文档。

  • -1 通常,您不应该依赖具体的输入方法,除非您正在制作自己的组件。我认为你想要做的是当开关**改变其状态**(通过键盘,拖动,...)时收到通知,而不是当用户用鼠标单击时收到通知。**请参阅 Kknd 的答案。** (2认同)