1

右クリック ポップアップには約 5 ~ 6 個のメニュー項目があり、再利用できるコードのかなりの部分があるため、それらを個別のメソッドにバインドするのは不器用に思えますが、このようなことは可能ですか?

self.Bind(wx.EVT_MENU, self.MenuClicked, id=self.menu1)
self.Bind(wx.EVT_MENU, self.MenuClicked, id=self.menu2)
self.Bind(wx.EVT_MENU, self.MenuClicked, id=self.menu3)
self.Bind(wx.EVT_MENU, self.MenuClicked, id=self.menu4)
self.Bind(wx.EVT_MENU, self.MenuClicked, id=self.menu5)

def MenuClicked(self, event):
    detect which menu being clicked
    assign specific values to several variables regarding the menu being clicked

    rest of the codes.

GetMenu()が利用できないことに気付きましたがwx.EVT_MENU、基本的にどのメニューがクリックされているかをどのように認識していますか?

4

2 に答える 2

0

これを行うには多くの方法がありますが、標準的で一般的なアプローチは次を使用することfunctools.partialです。

f = functools.partial(self.MenuClicked, my_id_1)
self.Bind(wx.EVT_MENU, f, id=self.menu1)

wheremy_id_1は何らかの識別子で、場合によっては self.menu1 であり、その後は別の場所にあります。

def MenuClicked(self, my_id, evt):
    print my_id
于 2013-09-01T03:31:19.337 に答える