python:如何从sub if if语句返回函数?

时间:2015-07-08 07:07:05

标签: python

我有以下代码:

 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方式来做到这一点。我尝试了breakcontinue但我没有循环,所以它不会接受它们。

2 个答案:

答案 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语句永远不会被调用,因为它肯定会终止该函数。

相关问题