wxPython等待对话框响应后再继续



我创建了一个对话框,要求用户单击按钮继续(例如"你确定要这样做吗?")并使用侦听器等待响应

from wx.lib.pubsub import pub  
...  
pub.subscribe(self.my_listener, "my_listener")

以及一旦点击响应就设置变量的功能

def my_listener(self, message):
    if message == 'proceed':
        self.proceed = True
    else:
        self.proceed = False

我的代码的主体看起来像:

self.proceed = False       # Make sure it's false initially
launch_verify_dialog()     # Launch the dialog
if self.proceed:
    # DO STUFF
else:
    print 'NARF!'

现在的问题是,当它运行时,代码会运行"ifself.proceed"if语句,并在我有机会响应对话框之前立即打印"NARF!"。为什么会发生这种情况,在继续之前如何等待对对话框的响应?

我试着在if语句前面放一个循环来等待响应,但这只会使程序崩溃,我已经验证了监听器是否工作,并正确设置了self.proceed变量。

谢谢!!

您使用对话框而不是框架,并使用dlg.ShowModal()

或者如果你只是想问一个简单的是/否问题

if wx.MessageBox("Are You Sure?","Checking",wx.YES_NO) == wx.YES:
   print ("User Clicked Yes")
else:
   print ("User did not click yes (clicked No or closed)")

如果你需要更复杂的东西

class MyDialog(wx.Dialog):
    def __init__(self):
       wx.Dialog.__init__(self,None,-1,"A Title")
       wx.StaticText(self,-1,"Some Text!")
       b = wx.Button(self,-1,"Click",pos=(100,100))
       b.Bind(wx.EVT_BUTTON, self.OnClick)
     def OnClick(self,evt):
       pub.sendMessage("whatever")
       self.Destroy()
 MyDialog().ShowModal()
 #will not continue until MyDialog Closes...

最新更新