我想从不敏感的小部件中获取信号。但是当窗口小部件对widget.set_sensitive(False)
代码行不敏感时,此窗口小部件的信号不起作用。如何确保不敏感小部件的信号工作?
例如
w = Gtk.Button("example")
w.set_sensitive(False)
w.connect("button-press-event", do_anything) # not work
我只想冻结小部件。但小部件完全没有这种方式。
答案 0 :(得分:2)
您必须将按钮打包在EventBox中。
e_b = Gtk.Eventbox()
button = Gtk.Button()
e_b.add(button)
e_b.set_above_child(True) #necessary for event handling
e_b.connect("button-press-event", do_anything)
然而,它让我想知道你想要做什么。见@JoseFonte回答。
答案 1 :(得分:1)
这就是小部件不敏感的含义。如果是这样,他们就不会向事件发出信号,你将无法与它们互动。
在某些情况下,您希望窗口小部件不敏感,例如,在身份验证对话框中想象一个“登录”按钮,但如果用户名和密码都不为空,您只想允许登录。然后,您可以检查条目内容,如果没有为空,则将“登录”设置为敏感。
来自Python API - Gtk.Widget set_sensitive方法:
设置窗口小部件的灵敏度。如果用户,小部件是敏感的 可以与它互动。不敏感的小部件是“灰显的”和 用户无法与他们互动。不敏感的小部件被称为 其他一些工具包中的“不活动”,“禁用”或“幻影”。