GUI 동결: PyQt 애플리케이션에서 time.sleep의 대안
PyQt 애플리케이션은 time.sleep을 사용할 때 동결 효과로 인해 문제가 자주 발생합니다. GUI 스레드에서. 이 문제를 해결하려면 대체 솔루션이 필요합니다.
지연된 작업에 QTimer 활용
한 가지 옵션은 QTimer를 활용하는 것입니다. 하지만 이 방법을 사용하려면 타이머를 별도의 함수에 연결해야 하는데, 이는 지연 후 현재 함수를 계속 사용하려는 상황에는 적합하지 않을 수 있습니다.
QTest.qWait: Non-Blocking 절전 기능
대체 솔루션은 PyQt4 모듈에서 QTest.qWait를 사용하는 것입니다. 이 함수는 GUI 스레드를 차단하지 않고 time.sleep의 동작을 시뮬레이션합니다. 구문은 다음과 같습니다.
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_())
이 예에서 애플리케이션이 실행되는 동안 GUI는 계속 응답합니다. QTest.qWait를 사용하여 2초 동안 기다립니다. 지연 후 라벨 텍스트가 업데이트됩니다.
위 내용은 PyQt GUI 정지를 방지하는 방법: time.sleep의 대안?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!