Я пишу очень маленькое приложение с PyQt. До сих пор все мои тесты были на Ubuntu / gnome.
Мне нужно одно окно в стиле «всплывающее окно» без ввода панели задач / панели, которое будет закрывать себя (и приложение) в тот момент, когда оно теряет фокус.
Кажется, флаг Qt.Popup соответствует всем требованиям, но у меня странная проблема. Я заметил, что можно (на самом деле довольно легко) отвести фокус от приложения при его запуске, оставив всплывающее окно без фокуса - и теперь его невозможно закрыть, потому что оно не может потерять фокус.
Вот упрощенный пример:
#!/usr/bin/python
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
if __name__ == '__main__':
app = QApplication(sys.argv)
w = QDialog()
w.setWindowFlags(Qt.Popup)
w.exec_()
Если вы щелкнете немного в тот же момент, когда запускается программа, QDialog появится без фокуса и не закроется ни при каких обстоятельствах. Нажатие на всплывающее окно не восстанавливает фокус и не позволяет закрыть его.
Я мог бы добавить кнопку закрытия во всплывающее окно (и я собираюсь это сделать!), Но это не исправляет некорректное поведение при фокусе. Есть ли что-то еще, что я должен делать с окнами Qt.Popup, чтобы предотвратить это, или я могу как-то обойти это?