对话的奇怪定位和行为

时间:2018-03-17 09:05:55

标签: wxpython

在下面的示例中,' handler()'被调用两次 - 首先作为常规函数,然后 - 可选 - 作为事件处理程序。 我的最终目标是让它按照前一个选项运行,但无论我做什么,我都会遇到以下问题:

  • SingleChoiceDialog在屏幕左上角显示某处,而不是相对于框架居中
  • 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,但它根本没有改变任何东西。我意识到   第一个问题与实际的父母有关   对话,但我无能为力。

1 个答案:

答案 0 :(得分:0)

好的,我想出了原因 - 这是样式标志wx.CENTRE。任何其他标志,代码按预期工作。但它仍然很奇怪,对我来说看起来像个错误。