gpt4 book ai didi

python - 是否可以使用模型- View - Controller 架构制作一个 python 消息对话框?

转载 作者:行者123 更新时间:2023-12-01 04:03:38 25 4
gpt4 key购买 nike

我正在尝试创建一个包含所有消息对话框的类,这样我就不需要将它们与我的逻辑混合在一起。目的是让 GUI 代码远离非 GUI 的东西,我想实现一个很好的模型- View - Controller 架构

class errorMessageDialog(wx.MessageDialog):

def __init__(self, message, caption= 'Error'):
wx.MessageDialog.__init__(self, None, message, caption, wx.OK | wx.ICON_ERROR)
self.ShowModal()
self.Destroy()

我已经设法针对简单的错误消息执行此操作(请参见上面的示例),但是我想创建一个消息对话框,用户可以在其中选择“确定”或“取消”。在这种情况下,该方法应该返回一个 bool 值。我尝试了以下方法:

class safetyCheck(wx.MessageDialog):
def __init__(self, message="Make sure the following commands are correct", caption= 'Safety Warning'):
wx.MessageDialog.__init__(self, None, message, caption, wx.OK | wx.CANCEL | wx.CENTRE | wx.ICON_EXCLAMATION)

if self.ShowModal() == wx.ID_OK:
safetyCheckPassed = True
else:
safetyCheckPassed = False
return safetyCheckPassed
self.Destroy()

我可能错了,但我认为我想要实现的目标是不可能的,因为必须在返回之前调用 self.Destroy 方法,因此返回行永远不会运行。

显然,我可以在模型代码中创建对话框,但这会很困惑。

编辑:

我考虑了下面的建议,但我没有设法完成任何这些工作,我最终得到了这个解决方案。

class SafetyCheckAFT(wx.MessageDialog):

def __init__(self):
pass

def dialog(self):
message="Make sure the following commands are correct"
caption= 'Safety Warning'
dlg= wx.MessageDialog(None, message, caption, wx.OK | wx.CANCEL | wx.CENTRE | wx.ICON_EXCLAMATION)

if dlg.ShowModal() == wx.ID_OK:
self.safetyCheckPassed = True
else:
self.safetyCheckPassed = False
dlg.Destroy()

def isSaftyCheckPassed(self):
return self.safetyCheckPassed


sc=SafetyCheckAFT()
sc.dialog()
if sc.isSaftyCheckPassed():
print("cool beans")

最佳答案

看看:How do I correctly clean up a Python object?

将 python with 语句与 __exit__ 语句结合使用,您应该能够清理资源。

您可能还想尝试使用try:finally:将return语句放在try末尾,并在finally中进行清理:

我还没有测试过这个,我已经有一段时间没有使用 python 了。

关于python - 是否可以使用模型- View - Controller 架构制作一个 python 消息对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36066135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com