Python 2.7: закрыть диалог, не выходя из всего приложения - PullRequest
0 голосов
/ 23 января 2019

Я запускаю скрипт, написанный на python, из меню скриптов в настольном приложении.Это в основном гигантский макрос, который я написал и добавил графический интерфейс.Я уверен, что графический интерфейс действительно старый, который использует мое настольное приложение под названием dialogKit из MIT. GitHub все еще здесь. Проблема в том, что слово "stop" находится в самом конце диалогового кода.Я продолжаю получать сообщение "Стоп не определен", которое я понимаю, но я пытался все, чтобы закрыть диалоговое окно, и если я использую exit(), sys.exit(), я не получаю сообщение об ошибке, но оно также закрывает мойвсего настольного приложения.

Мне нужно закрыть диалоговое окно и оставить программное обеспечение открытым.Документацию с ограниченным диалоговым окном для того, что я использую, можно найти здесь .(возможно, вам придется нажать на раздел «Диалог». На их сайте используются фреймы.)

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 голосов
/ 23 января 2019

Хорошо, я отправляю ответ, потому что думаю, что у меня есть справка по вашей проблеме.

Попробуйте заменить стоп на:

d.d.End()

Если это работает, вы можете захотетьпопробуйте поместить:

self.d.End()

внутри функции on_cancel в вашем классе.Это должно закрыть диалог, не закрывая вашу программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...