我正在尝试使用PyGTK创建一个Window,它基于一个字符串数组动态创建单选按钮(一个看起来像[“选项1”,“选项2”,“选项3”]的数组会创建3个单选按钮,带有与数组元素相对应的标签)。
我的问题是所有单选按钮都被选中,它们无法取消选中,因此我无法连接到“toggled”事件。我看不出我做错了什么。
class SelectionWindow(Gtk.Window):
def __init__(self):
global options
super(EmulatorSelectionWindow, self).__init__()
self.set_title("Select an Emulator")
box = Gtk.VBox(spacing=10)
group = Gtk.RadioButton(None, "test radio")
box.pack_start(group, True,True, 0)
for option in options:
r = Gtk.RadioButton(group, option)
r.connect("toggled", self.on_radio_selection, option)
print "before setting active", r.get_active()
r.set_active(False)
print "after setting active", r.get_active()
box.pack_start(r,True, True, 0)
self.add(box)
def on_radio_selection(self, widget, data=None):
print "toggle pressed", data
调用get_active()的print语句总是打印为True
[编辑] 我正在加载Gtk
from gi.repository import Gtk
答案 0 :(得分:3)
似乎在较新的版本中,您使用静态方法Gtk.RadioButton.new_with_label_from_widget而不是您当前使用的方法来创建单选按钮(适用于pygtk 2.0版本)。尝试在代码中将Gtk.RadioButton
更改为Gtk.RadioButton.new_with_label_from_widget
希望这有帮助!