У меня в основном возникают вопросы, заданные в цикле for, и я пытаюсь заставить каждый вопрос дождаться ответа (иначе нажмите кнопку), прежде чем показывать следующий вопрос. Мне было интересно как я могу это сделать, потому что теперь у меня есть настройка, так что каждый вопрос будет отображаться один за другим независимо от ответа ...wait до тех пор, пока не будет нажата кнопка
ответ
Не помещайте его в цикл for
, вам нужно показать следующий вопрос как реакция на событие.
Я не работал с PyGTK, но сделать себе идею, если вы что-то вроде этого:
for question in questions:
some_text_pane.set_text(question)
#wait until button pressed
вы должны иметь что-то вроде этого:
question_pool = iter(questions)
def next_question(evt):
question = next(question_pool)
some_text_pane.set_text(question)
some_button.set_event_handler(next_question)
я, конечно, не знаю API GTK, поэтому не принимайте имена методов буквально.
Обратите внимание, что цикл for
не позволит основному циклу gtk
выполнять его задания и вызывать методы обратного вызова для ожидаемых событий, и ваше приложение будет не отвечать на запросы.
Один из способов сделать то, что вам нужно, - использовать gtk.Assistant
с одним вопросом на странице в вспомогательном объекте и, возможно, одной последней страницей с кратким изложением результатов на вопросы, основанные на ожидаемых ответах.
+1, помощник кажется лучшим решением, если вопросы касаются конфигурации, а не случайной викторины – fortran
В gtk 'some_button.set_event_handler (callback)' будет 'some_button.connect ('clicked', callback)' и 'next_question (evt)' будет 'next_question (button)'. Во всяком случае, объяснение совершенно правильно. – jcollado