Pembekuan GUI: Alternatif kepada time.sleep dalam Aplikasi PyQt
Aplikasi PyQt sering menghadapi masalah apabila menggunakan time.sleep disebabkan oleh kesan pembekuannya pada benang GUI. Untuk menangani perkara ini, penyelesaian alternatif diperlukan.
Menggunakan QTimer untuk Tindakan Tertunda
Satu pilihan ialah menggunakan QTimer. Walau bagaimanapun, kaedah ini memerlukan memautkan pemasa kepada fungsi yang berasingan, yang mungkin tidak sesuai untuk situasi di mana anda ingin meneruskan fungsi semasa selepas kelewatan.
QTest.qTunggu: Tidak Menghalang Fungsi Tidur
Penyelesaian alternatif ialah menggunakan QTest.qWait daripada modul PyQt4. Fungsi ini menyerupai gelagat time.sleep tanpa menyekat benang GUI. Sintaks adalah seperti berikut:
from PyQt4 import QtTest QtTest.QTest.qWait(msecs)
Di mana "msecs" mewakili kelewatan yang diingini dalam milisaat. Tidak seperti time.sleep, QTest.qWait membenarkan GUI kekal responsif semasa kelewatan.
Contoh Penggunaan
Untuk menggambarkan penggunaan QTest.qTunggu, pertimbangkan perkara berikut coretan kod:
import sys from PyQt5.QtWidgets import QMainWindow, QLabel, QWidget, QVBoxLayout class Example(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.label = QLabel("Waiting...") self.setCentralWidget(self.label) QtTest.QTest.qWait(2000) self.label.setText("Finished waiting") if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() ex.show() sys.exit(app.exec_())
Dalam contoh ini, GUI kekal responsif semasa aplikasi menunggu selama 2 saat menggunakan QTest.qTunggu. Selepas kelewatan, teks label dikemas kini.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Pembekuan GUI PyQt Anda: Alternatif kepada time.sleep?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!