1

文字列の配列に基づいてラジオ ボタンを動的に作成した PyGTK を使用してウィンドウを作成しようとしています (["option 1", "option 2", "option 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() を呼び出す print ステートメントは、常に True を出力します。

[編集] Gtkをロードしています

from gi.repository import Gtk

これは私の窓です

4

1 に答える 1

2

新しいバージョンでは、現在ラジオ ボタンを作成するために使用しているメソッドの代わりに、静的メソッドGtk.RadioButton.new_with_label_from_widgetを使用しているようです (pygtk 2.0 バージョンでは正常に動作します)。コード内で に変更Gtk.RadioButtonしてみてください。 お役に立てれば!Gtk.RadioButton.new_with_label_from_widget

于 2012-10-05T19:15:41.387 に答える