在下面的示例中,' handler()'被调用两次 - 首先作为常规函数,然后 - 可选 - 作为事件处理程序。 我的最终目标是让它按照前一个选项运行,但无论我做什么,我都会遇到以下问题:
GetStringSelection()不仅输出所选字符串,还输出第二个值:'无'
import wx
def handler(fragment):
ChoiceOptions=['alpha','beta','gamma']
dlg = wx.SingleChoiceDialog(frame,"make a choice", 'Caption', ChoiceOptions, wx.CENTRE )
if dlg.ShowModal() == wx.ID_OK:
print dlg.GetStringSelection()
dlg.Destroy()
if __name__ =="__main__":
app = wx.App(False)
frame = wx.Frame(None, wx.ID_ANY, "Meaningless")
btn = wx.Button(frame, label='Get going')
btn.Bind(wx.EVT_BUTTON, (lambda stub: handler('must keep this param')))
frame.Show(True)
print 'handler returned',handler('must keep this param')
app.MainLoop()
当调用相同的函数作为事件处理程序时,这些问题就会消失。我真的需要了解如何让它们随意消失。
编辑:我试图移除并放回父母'的参数 SingleChoiceDialog,但它根本没有改变任何东西。我意识到 第一个问题与实际的父母有关 对话,但我无能为力。
答案 0 :(得分:0)
好的,我想出了原因 - 这是样式标志wx.CENTRE。任何其他标志,代码按预期工作。但它仍然很奇怪,对我来说看起来像个错误。