我知道"切换或未支持" 事件不存在,但我需要使用这样的事件。当按钮是"切换"是否有事件要做任务?并且"没有眼睛"。我不想使用"点击"事件因为ToggleButton可以在没有单击的情况下切换或取消切换 感谢
例如
def foo(obj):
if obj.get_active():
print("toggled")
else:
print("untoggled")
mybtn = gtk.ToggleButton()
mybtn.connect("toggled-or-untoggled", foo)
答案 0 :(得分:2)
答案 1 :(得分:1)
这是一个简短的GTK2 + / PyGTK演示;如果需要,它应该很容易适应GTK3。
GUI包含一个ToggleButton和一个普通的Button。 ToggleButton的回调只是在用户点击它或其他调用其set_active
方法的代码时切换按钮的状态。普通按钮在单击时会打印一条消息,它也会切换ToggleButton。
#!/usr/bin/env python2
from __future__ import print_function
import pygtk
pygtk.require('2.0')
import gtk
class Test(object):
def __init__(self):
win = gtk.Window(gtk.WINDOW_TOPLEVEL)
win.connect("destroy", lambda w: gtk.main_quit())
box = gtk.HBox()
box.show()
win.add(box)
self.togglebutton = button = gtk.ToggleButton('toggle')
button.connect("toggled", self.togglebutton_cb)
box.pack_start(button, expand=True, fill=False)
button.show()
button = gtk.Button('plain')
button.connect("clicked", self.button_cb)
box.pack_start(button, expand=True, fill=True)
button.show()
win.show()
gtk.main()
def button_cb(self, widget):
s = "%s button pressed" % widget.get_label()
print(s)
print('Toggling...')
tb = self.togglebutton
state = tb.get_active()
tb.set_active(not state)
def togglebutton_cb(self, widget):
state = widget.get_active()
s = "%s button toggled to %s" % (widget.get_label(), ("off", "on")[state])
print(s)
Test()
典型输出
toggle button toggled to on
toggle button toggled to off
plain button pressed
Toggling...
toggle button toggled to on
plain button pressed
Toggling...
toggle button toggled to off
plain button pressed
Toggling...
toggle button toggled to on
toggle button toggled to off