精英干员瑕光 2023-07-27 09:44 采纳率: 76.5%
浏览 2
已结题

wxpython弹窗需要点击两次

各位,这是我的代码。
我希望能够根据用户点击是、否、以及取消(或点击X关闭)进行三种不同的处理,但实际使用时如果点击的不是if中第一行的按钮,弹窗则会刷新一次,我该如何修改以使不论点击哪个按钮都能判断并且只需要点击一次


                 c = wx.MessageDialog(None, '检测到本期已有数据,是否清除', but, style=wx.YES_NO|wx.CANCEL)

                if c.ShowModal() == wx.ID_YES:pass
                elif c.ShowModal() == wx.ID_NO:
                    c.Destroy()
                    de=False
                else :
                    c.Destroy()
                    wx.MessageBox('终止')
                    conn.close()
                    return
  • 写回答

2条回答 默认 最新

  • 精英干员瑕光 2023-07-27 10:23
    关注

    根据你提供的代码,问题可能出在你对弹窗返回值的处理上。在这里,你通过两次调用ShowModal()方法来获取用户点击的按钮返回值,但实际上每次调用ShowModal()都会弹出一个新的对话框,并且返回的值可能不同。

    为了解决这个问题,你可以将返回值保存到一个变量中,然后在后续的判断中使用该变量。以下是修改后的代码示例:

    c = wx.MessageDialog(None, '检测到本期已有数据,是否清除', but, style=wx.YES_NO|wx.CANCEL)
    
    result = c.ShowModal()
    if result == wx.ID_YES:
        pass
    elif result == wx.ID_NO:
        c.Destroy()
        de = False
    else:
        c.Destroy()
        wx.MessageBox('终止')
        conn.close()
        return
    
    

    通过将返回值保存到变量result中,你可以在后续的判断中使用该变量来避免多次调用ShowModal()方法。希望这能帮助到你解决问题!如果还有其他疑问,请随时提问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月4日
  • 已采纳回答 7月27日
  • 创建了问题 7月27日

悬赏问题

  • ¥15 地图软件开发技术答疑(api, 地点获取,外观样式)
  • ¥20 物理远程控制麦克风使用问题
  • ¥15 打印预览会泄漏纸钱包密码吗
  • ¥15 在hololens1上运行unity项目只有空窗口
  • ¥25 TABLEAU PREP无法打开
  • ¥15 百度帐号问题/centos
  • ¥15 关于#c语言#的问题:求完整代码条件好说
  • ¥100 HALCON DELPHI
  • ¥15 (需要远程,AI不回)VB6二进制文件转换成功,但是C#转换总是失败
  • ¥15 关于#matlab#的问题:有没有什么其他办法能够保证不退出进程(相关搜索:matlab调用)