Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengelakkan Pembekuan GUI PyQt Anda: Alternatif kepada time.sleep?

Bagaimana untuk Mengelakkan Pembekuan GUI PyQt Anda: Alternatif kepada time.sleep?

DDD
Lepaskan: 2024-11-25 03:11:12
asal
826 orang telah melayarinya

How to Avoid Freezing Your PyQt GUI: Alternatives to time.sleep?

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)
Salin selepas log masuk

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_())
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan