Russian Qt Forum

Программирование => Python => Тема начата: Пытон от Январь 06, 2012, 14:53



Название: [Решено] Вызов окна из функции. Нужно, чтобы функция ждала закрытия окна.
Отправлено: Пытон от Январь 06, 2012, 14:53
Код
Python
def myfunc():
   MyDialog.show()
   return
 

Окно MyDialog открывается, но функция не ждёт его закрытия и сразу переходит к оператору return. Окно MyDialog создано как диалог: MyDialog = QtGui.Qdialog(MyParentForm). Флаг модальности установлен: MyDialog.setWindowModality(1)

Как заставить функцию дождаться закрытия диалогового окна? Мне нужно заполучить данные о нажатиях на клавиши в диалоговом окне прежде чем выйти из этой функции.


Название: Re: Вызов окна из функции. Нужно, чтобы функция ждала закрытия окна.
Отправлено: BRE от Январь 06, 2012, 14:55
MyDialog.exec()?


Название: Re: Вызов окна из функции. Нужно, чтобы функция ждала закрытия окна.
Отправлено: Пытон от Январь 06, 2012, 15:19
Вы - гений!
П.С. Почему в моём учебнике ни разу не упоминается этот exec, спрашивается???
П.П.С. Спасибо.


Название: Re: Вызов окна из функции. Нужно, чтобы функция ждала закрытия окна.
Отправлено: iroln от Январь 06, 2012, 16:53
Только
Код
Python
MyDialog.exec_()
Запускает цикл сообщений окна. В учебнике должно быть про это написано, как же без этого то?


Название: Re: Вызов окна из функции. Нужно, чтобы функция ждала закрытия окна.
Отправлено: Пытон от Январь 06, 2012, 17:47
А я использовал exec без символа подчёркивания и всё работает. exec и exec_ чем-то отличаются?


Название: Re: Вызов окна из функции. Нужно, чтобы функция ждала закрытия окна.
Отправлено: iroln от Январь 06, 2012, 18:04
Хм...
Просто дело в том, что exec() - это функция стандартной библиотеки (ссылка) (http://docs.python.org/release/3.1.3/library/functions.html#exec). В питоне вроде как раньше нельзя было называть методы классов так же как функции стандартной библиотеки. Поэтому в PyQt4 и PySide exec() заменён на exec_(). Как вы могли использовать exec() в питоне не понятно.


Название: Re: Вызов окна из функции. Нужно, чтобы функция ждала закрытия окна.
Отправлено: Пытон от Январь 08, 2012, 18:41
Может в третьем питоне какие-то изменения? На нём учусь писать.