2015-07-08 2 views
0

Я пишу приложение PyQt, которое должно получить некоторый ввод перед загрузкой главного окна. Я создал следующий класс (свернутом):Дождитесь запуска триггера

class MyInput(QWidget): 
    def __init__(self): 
     super(MyInput, self).__init__() 
     self.thing = False 

     mybutton = QPushButton('Press me', self) 
     mybutton.clicked.connect(self.set_data) 

    def set_data(self): 
     self.hide() 
     self.destroyLater() 
     self.thing = True 

    def get_thing(self): 
     self.show() 
     return self.thing 

Позже, у меня есть эта функция:

def ask_thing(): 
    mi = MyInput() 
    return mi.get_thing() 

Теперь, когда я называю ask_thing(), я хочу mi.get_thing() ждать, чтобы кнопка была нажата перед возвратом значения (или возврата False, если он закрыт). Тем не менее, self.show(), похоже, запускается отдельно и позволяет продолжить выполнение кода, нажав оператор return и оставив функцию.

Как можно подождать ввода?

ответ

1

Возможно, вам стоит рассмотреть возможность изменения с QWidget по номеру QDialog. Затем измените функцию show на exec_, которая будет выполнять взаимодействие с виджетами, ожидающими пользователя.

+0

'QWidget' не имеет функции' exec' или 'exec_' (потому что Python). – 2mac

+0

Правда. Возможно, вам стоит перейти на '' QDialog''. –

Смежные вопросы