2012-01-09 5 views
-1

У меня в основном возникают вопросы, заданные в цикле for, и я пытаюсь заставить каждый вопрос дождаться ответа (иначе нажмите кнопку), прежде чем показывать следующий вопрос. Мне было интересно как я могу это сделать, потому что теперь у меня есть настройка, так что каждый вопрос будет отображаться один за другим независимо от ответа ...wait до тех пор, пока не будет нажата кнопка

ответ

2

Не помещайте его в цикл 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, поэтому не принимайте имена методов буквально.

+1

В gtk 'some_button.set_event_handler (callback)' будет 'some_button.connect ('clicked', callback)' и 'next_question (evt)' будет 'next_question (button)'. Во всяком случае, объяснение совершенно правильно. – jcollado

2

Обратите внимание, что цикл for не позволит основному циклу gtk выполнять его задания и вызывать методы обратного вызова для ожидаемых событий, и ваше приложение будет не отвечать на запросы.

Один из способов сделать то, что вам нужно, - использовать gtk.Assistant с одним вопросом на странице в вспомогательном объекте и, возможно, одной последней страницей с кратким изложением результатов на вопросы, основанные на ожидаемых ответах.

+0

+1, помощник кажется лучшим решением, если вопросы касаются конфигурации, а не случайной викторины – fortran