2010-10-15 1 views
0

Я пишу программу, которая иногда встречает ошибку. Когда это произойдет, в нем появится диалоговое окно Tkinter с запросом пользователя о продолжении. Это более сложный вариант этого:Как приостановить Python, пока открыто окно Tkinter?

keep_going = False 
KeepGoingPrompt(keep_going) 
if not keep_going: 
    return

Контекстные наборы keep_going к True или покидает его False. Проблема в том, что код, кажется, продолжается, пока KeepGoingPrompt открыт. Я пытался хранить ссылку на prompt и добавление цикла, как

while prompt: 
    time.sleep(1) 

но питон застревает в петле и застывает. Есть ли лучший способ сделать это?

Благодаря

ответ

1

Вы можете использовать класс tkMessageBox всплывал диалог вопроса, который является модальным и не вернется до тех пор, пока пользователь не нажмет кнопку. См. the Tkinter book.

+0

Я попытался это, но не могу сказать, если это работает, потому что, кажется, вызвали некоторые другие нечетные ошибки. Но это, вероятно, просто что-то еще в моем коде не получилось. :( – Jeff

+0

Можете ли вы описать эти ошибки? Может показаться, что они связаны с диалоговым вызовом, поскольку tkMessageBox по сути является очень простой оболочкой для вызова API Windows MessageBox, я бы сказал, что маловероятно, что это проблема с самим вызовом. – chaos95

+0

Ну, исправлена ​​ошибка, с которой я столкнулся. Но теперь есть новый (может быть, более простой?) один: сообщение просто пропущено, так же как и исходное диалоговое окно. – Jeff

0

1) Вы используете свой код внутри IDLE? Это может быть причиной того, что диалог не блокируется, в то время как он действительно должен блокироваться.

2) При работе вне IDLE не помогает, искать варианты Tkinter/диалоговые которые определяют, является ли поведение блокировки или неблокирующая

+0

Не прочь, но я бегу внутри экспериментальная программа с нестандартным интерпретатором python в ней. Там может быть что-то странное. :) – Jeff