python:如何从subif语句中的函数返回?

2024-10-02 14:25:26 发布

您现在位置: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)

但我想知道是否有一种更具霸道/时尚的方式来做到这一点。我尝试了breakcontinue,但是我这里没有循环,所以它不会接受它们。你知道吗


Tags: 代码datareturnifdef语句resultwin
2条回答

wx.CANCEL不是从^{}返回的内容:

Shows the dialog, returning one of ID_OK, ID_CANCEL, ID_YES, ID_NO or ID_HELP.

所以,你需要result == wx.ID_CANCEL

我建议采用以下逻辑:

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

相关问题 更多 >