凍結GUI:PyQt 應用程式中time.sleep 的替代品
PyQt 應用程式在使用time.sleep 時經常會遇到問題,因為它的凍結效果在GUI 執行緒上。為了解決這個問題,需要替代解決方案。
利用 QTimer 進行延遲操作
一種選擇是利用 QTimer。但是,此方法需要將計時器連結到單獨的函數,這可能不適合您希望在延遲後繼續當前函數的情況。
QTest.qWait:非阻塞睡眠函數
另一個解決方案是使用 PyQt4 模組中的 QTest.qWait。此函數模擬 time.sleep 的行為,而不阻塞 GUI 執行緒。語法如下:
from PyQt4 import QtTest QtTest.QTest.qWait(msecs)
其中「msecs」表示所需的延遲(以毫秒為單位)。與 time.sleep 不同,QTest.qWait 允許 GUI 在延遲期間保持回應。
範例用法
為了說明QTest.qWait 的用法,請考慮以下內容程式碼片段:
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_())
在此範例中,當應用程式等待2 時,GUI 保持回應使用QTest.qWait 秒。延遲後,標籤文字會更新。
以上是如何避免凍結 PyQt GUI:time.sleep 的替代方案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!