Ich benutze Qt Designer um meine GUI's zu erstellen und sie in py Dateien mit pyuic5 zu konvertieren. Mein Endziel ist hier, den Benutzer vom Schließen des Programms zu unterbrechen, wenn eine Variable == 1 und sie mit einem "Sind Sie sicher, dass Sie schließen möchten?" Geben Sie den Dialog ein. Wenn die Variable == 0 ist, dann schließe das Programm normal.PyQt5 Interrupt Close Event von außerhalb des Main Gui Moduls
Ich habe viele Beispiele dafür gesehen, aber alle von ihnen erfordern die Bearbeitung des Codes im GUI-Modul. Ich importiere meine gui.py-Datei, die von pyuic5 erstellt wurde, in mein Hauptscript, wo ich alle meine Verbindungen zu Buttons, Zeilenänderungen usw. mache. Ich tue dies, damit ich jederzeit die GUI mit Qt Designer aktualisieren und die Programmfunktionalität nicht beeinflussen kann .
Gibt es eine Möglichkeit, dies von meinem Hauptskript zu tun, das das GUI-Modul von Qt Designer importiert hat?
Beispiel dafür, wie mein Haupt-Skript ist strukturiert:
import philipsControlGui
import sys
def main():
MainWindow.show()
sys.exit(app.exec_())
def test():
print('test')
# Main window setup
app = philipsControlGui.QtWidgets.QApplication(sys.argv)
MainWindow = philipsControlGui.QtWidgets.QMainWindow()
ui = philipsControlGui.Ui_MainWindow()
ui.setupUi(MainWindow)
# Main window bindings
ui.onButton.clicked.connect(test)
### Can I insert something here to do: if user closes the window... do something else instead?
if __name__ == "__main__":
main()
Sie müssen die Methode closeEvent überschreiben (wie Sie wahrscheinlich bereits aus den vielen Beispielen wissen). Ich weiß nicht, ob du das in Qt Designer machen kannst. – Trilarion