PyQt5 уничтожить программу правильно
Я использую self.setWindowFlags(Qt.Tool)
скрыть приложение на панели задач. Тем не менее, я понял, что даже я нажимаю x
в правом верхнем углу программы она все еще работает в фоновом режиме (я вижу это в диспетчере задач / процессах). Так что это означает, что программа не закрывается должным образом. Это потому что я использую self.setWindowFlags(Qt.Tool)
? Как я могу это исправить, эта опция флага скрывает значок программы, но даже если я нажимаю x
чтобы закрыть программу, она все еще работает в фоновом режиме.
2 ответа
Я нашел решение, сделайте свою собственную кнопку выхода и подключите сигнал, как показано ниже
self.xbutton = QPushButton(self)
self.xbutton.setText("Quit")
self.xbutton.clicked.connect(self.close)
Это уничтожит приложение правильно. Также вместо Qt.Tool
использование self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
В Qt приложение будет продолжать работать до тех пор, пока главный цикл обработки событий не получит сигнал на выход. В большинстве приложений это предусмотрено, когда последний (или единственный) QMainWindow
уничтожен (см. QApp.setQuitOnLastWindowClosed()
).
Настройка Qt.Tool
флаг на QMainWindow
очищает WA_QuitOnClose
флаг означает, что закрытие окна больше не будет сигнализировать о выходе из приложения. Однако вы можете снова включить этот флаг, как описано в этом посте на форуме Qt.
window = QMainWindow(None, Qt.Tool)
window.show() # must be called before setting Qt::WA_QuitOnClose
window.setAttribute(Qt.WA_QuitOnClose)
Кроме того, вы также можете запустить выход вручную, используя QApp.quit()
,