【发布时间】:2019-01-22 23:31:27
【问题描述】:
我正在从桌面应用程序的脚本菜单运行用 python 编码的脚本。它基本上是一个巨大的宏,我编写并添加了一个 GUI。我很确定 GUI 是我的桌面应用程序使用的一个非常古老的 GUI,称为 MIT 的 dialogKit。
GitHub still has it here.
问题是对话代码末尾的“停止”一词。
我不断收到“停止未定义”消息,我理解,但我已经尝试了一切来关闭对话框,如果我使用 exit()、sys.exit(),我没有收到错误,但它也会关闭我的整个桌面应用程序。
我需要关闭对话框并保持软件打开。 我正在使用的有限对话框文档可以在here 找到。 (您可能需要点击对话框部分。他们的网站使用框架。)
class MyDialog:
def __init__(self):
self.d = Dialog(self)
self.d.size = Point(300, 340)
self.d.Center()
self.d.title = "Halftone" #<----- Title of the dialogue
self.d.AddControl(STATICCONTROL, Rect(aIDENT, aIDENT, aIDENT, aIDENT), "frame", STYLE_FRAME)
# more controls and methods..
def on_ok(self, code):
return 1
def on_cancel(self, code):
print "blah"
def Run(self):
return self.d.Run()
d = MyDialog()
if d.Run()!= 1:
stop
我只需要一种方法将 stop 更改为 1) 将阻止脚本运行,以及 2) 关闭对话框而不退出整个应用程序。这是一个典型的“取消”按钮的功能,这正是我想要的。
另一种选择是称为on_cancel() 的方法,我也尝试过并且可以让事件本身工作,但整个应用程序仍然会以任何类型的exit() 退出。
文档显示了一个名为End() 的方法,该方法声称终止对话对象,但我尝试过也未能使其正常工作。
【问题讨论】:
-
快速查看文档后,我认为 End() 就是您想要的。你是如何使用它的,发生了什么?
-
我尝试用
d.End()替换stop然后我尝试定义一个名为End()的函数,并在其中尝试了exit()和sys.exit() -
d.End() 是否抛出异常?我认为它应该有 - 你的班级没有一个名为 End 的函数。您必须使用 d.d.End(),或者您可以尝试将 self.d.End() 放入类中的 on_cancel 函数中。
标签: python python-2.7 dialog