私の小さなPyGObject/GTK3アプリケーションでは、RadioMenuItem
sで構成される(サブ)メニューを作成しようとしています。
メインウィンドウの次のようにメニューを作成します__init__
。
menu_item = None
self.menu = Gtk.Menu()
self.menu_items = {}
for i in range(1,5):
menu_item = Gtk.RadioMenuItem(menu_item)
menu_item.set_label(str(i))
self.menu_items[i] = menu_item
self.menu.append(self.menu_items[i])
self.menu_items[i].connect("activate",
self.on_menu_select,
i)
self.menu_items[i].show()
次に、button_press_event
を使用してハンドラーに表示します
def button_press(self, widget, event, data=None):
for i in range(1,5):
self.menu_items[i].set_active(False)
self.menu_items[2].set_active(True)
self.menu.popup(None, None, None, None,
event.button, event.time)
初めてメニューを開いたとき、メニュー項目「2」だけが正しく選択されています。次に、たとえば、メニュー項目「3」を選択してメニューを再度開くと、メニュー項目2と3の両方が選択されています。私は何が間違っているのですか?