[PYTHON] PySide - Machen Sie etwas im Hintergrund, während Sie den modelllosen Dialog anzeigen

Wenn Sie mit PySide einen modelllosen Dialog anzeigen möchten, verwenden Sie die show-Methode. Wenn beim Anrufer eine Verarbeitung ausgeführt wird Der Dialog wartet, bis der Vorgang abgeschlossen ist.

Um dies zu verhindern, regelmäßig in einem modelllosen Dialog Sie müssen QtGui.QApplication.processEvents () aufrufen. (QProgressbarDialog usw. rufen auch processEvents in der setValue-Methode auf Der Dialog wird regelmäßig aktualisiert.

Unten ein modellloser Dialog mit der Aufschrift "Bitte warten ...", wenn Sie eine zeitaufwändige Verarbeitung durchführen Ist ein Beispiel für die Anzeige.

py::waitdialog.py


import sys
from PySide import QtGui, QtCore


class WaitDialog(QtGui.QDialog):

    def __init__(self, parent=None):
        super(WaitDialog, self).__init__(parent)

        label1 = QtGui.QLabel("Please wait...")

        layout = QtGui.QVBoxLayout()
        layout.addWidget(label1)
        self.setLayout(layout)

        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
        self.setWindowTitle("Work in progress")
        self.resize(200, 100)
        self.setModal(True)
        self.show()
        self.raise_()
        QtGui.QApplication.processEvents()


def main():
    app = QtGui.QApplication(sys.argv)
    widget = WaitDialog()
    u"""Zeitaufwändiger Prozessstart"""
    import time
    time.sleep(10)
    u"""Zeitaufwändiges Verarbeitungsende"""
    widget.close()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

Recommended Posts

PySide - Machen Sie etwas im Hintergrund, während Sie den modelllosen Dialog anzeigen
So geben Sie eine .ui-Datei in der Dialog- / Widget-GUI in PySide an
Machen Sie so etwas wie einen Python-Interpreter mit Visual Studio Code
Machen Sie etwas objektorientiertes in der GO-Sprache
Ein nützlicher Hinweis, wenn Sie Python nach langer Zeit verwenden