Все переключатели PyGTK отмечены галочкой.

Я пытаюсь создать окно с помощью PyGTK, в котором есть динамически созданные переключатели на основе массива строк (массив, который выглядит как ["вариант 1", "вариант 2", "вариант 3"] создаст 3 переключателя с метками, соответствующими элементам массива).

Моя проблема в том, что все радиокнопки отмечены, их нельзя снять, и поэтому я не могу подключиться к событию «переключено». Я не вижу, что я делаю неправильно.

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(), всегда печатают True.

[Изменить] Я загружаю Gtk с помощью

from gi.repository import Gtk

Это мое окно


person vosmith    schedule 05.10.2012    source источник


Ответы (1)


Похоже, что в более новой версии вы используете статический метод Gtk.RadioButton.new_with_label_from_widget вместо метода, который вы используете в настоящее время для создания переключателя (который отлично работает для версий pygtk 2.0). Попробуйте изменить Gtk.RadioButton на Gtk.RadioButton.new_with_label_from_widget в коде.
Надеюсь, это поможет!

person another.anon.coward    schedule 05.10.2012