Python 2.7:关闭对话框而不退出整个应用程序

时间:2019-01-22 23:31:27

标签: python python-2.7 dialog

我正在从桌面应用程序的脚本菜单运行以python编码的脚本。从本质上讲,这是我编写并添加GUI的巨型宏。我很确定GUI是我的桌面应用程序使用的非常老的GUI,它来自MIT。 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()的方法,该方法声称可以终止该对话框对象,但是我尝试并未能使它起作用。

1 个答案:

答案 0 :(得分:0)

好的,我发布了答案,因为我认为我可以解决您的问题。

尝试将stop替换为:

d.d.End()

如果可行,您可能需要尝试放置:

self.d.End()

在类中的on_cancel函数内部。那应该关闭对话框而不关闭程序。