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