我有以下代码:
def func(self,e):
if x>0:
dlg = wx.MessageDialog(parent, "are you sure?", 'Warning!', wx.OK | wx.CANCEL| wx.ICON_WARNING)
result=dlg.ShowModal()
dlg.Destroy()
if result== wx.CANCEL:
return
win = FRMPOP(parent,data)
我的问题是:
if result== wx.CANCEL:
return
这个if语句是if x>0
的子语句我打算return
离开func1
但是它没有,FRMPOP
被调用。看起来return
语句只是存在if x>0
有没有办法更改if result== wx.CANCEL
,以便退出func
?我知道我可以用旗帜做到这一点。
类似的东西:
flag=0
...
if result== wx.CANCEL:
flag=1
if flag==0:
win = FRMPOP(parent,data)
但我想知道是否有更多的Pythonic / Stylish方式来做到这一点。我尝试了break
和continue
但我没有循环,所以它不会接受它们。
答案 0 :(得分:1)
wx.CANCEL
不会从ShowModal()
返回:
显示对话框,返回ID_OK,ID_CANCEL,ID_YES,ID_NO或其中一个或 ID_HELP。
所以,你需要result == wx.ID_CANCEL
答案 1 :(得分:0)
我建议采用以下逻辑:
def func(self,e):
result = wx.ID_OK
if x > 0:
dlg = wx.MessageDialog(parent, "are you sure?", 'Warning!', wx.OK | wx.CANCEL| wx.ICON_WARNING)
result=dlg.ShowModal()
dlg.Destroy()
if result == wx.ID_OK:
win = FRMPOP(parent,data)
减少函数返回的位置数会使流程更容易阅读。另外我假设你只想在按下OK的情况下运行该功能,所以最好不要检查ID_CANCEL
。
我猜你的return语句永远不会被调用,因为它肯定会终止该函数。