我使用以下类创建了一个wx.Choice:
class LanguageSelector(wx.Choice):
"""Class for the creation of a language selector."""
def __init__(self, parent):
"""Create a language selector, default to current language and bind options to localisation methods."""
super().__init__(parent=parent, choices=self.list_available_languages())
self.SetSelection(self.FindString(loc.o)) # Set current language as default option.
self.Bind(wx.EVT_CHOICE, self.on_choice()) # This is the problem.
def on_choice(self):
print("on_choice was triggered. Selected item is: " + str(self.GetSelection()))
selection = self.GetString(self.GetSelection())
print("Converted selection is: " + selection)
loc.change(selection)
不要介意" loc" item:这是我用来处理本地化的东西
self.list_available_languages()是一个静态方法,用项填充Choice。
现在的问题是:当我运行应用程序时,会立即打印打印消息并显示默认选择(这是我不会发生的事情,但它并不重要),但是当我尝试在Choice下拉列表中选择各种选项时,没有事件被触发,无论我选择哪一个。
我更喜欢不必使用按钮来捕捉选择并在选择更改时正确执行。我不明白我做错了什么。
答案 0 :(得分:1)
您正在调用您的处理程序而不是绑定它。您必须传递函数而不是将此函数调用到Bind()
的结果。只需删除括号即可解决此问题。