Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mencegah GUI Tkinter daripada Membeku Semasa Menunggu Benang untuk Selesai?

Bagaimana untuk Mencegah GUI Tkinter daripada Membeku Semasa Menunggu Benang untuk Selesai?

Patricia Arquette
Lepaskan: 2024-11-03 05:22:03
asal
589 orang telah melayarinya

How to Prevent Tkinter GUI from Freezing While Waiting for a Thread to Finish?

Membekukan/Menggantung GUI tkinter dalam menunggu benang selesai

Dalam contoh ini, GUI membeku apabila butang ditekan kerana utas utama sedang menunggu untuk benang yang dibuat oleh Thread(target = self.threaded_function) selesai sebelum meneruskan. Untuk memastikan GUI responsif, adalah penting untuk mengelak daripada menyekat urutan utama.

Berikut ialah pelaksanaan alternatif yang menggunakan baris gilir untuk menghantar data antara urutan dan GUI:

queue = Queue()

def threaded_function():
    while True:
        if not queue.empty():
            item = queue.get()
            print(item)
            # Do other processing here

def helloCallback():
    queue.put("asd")

m = magic()
B = tkinter.Button(top, text = "Hello", command = helloCallback)
B.pack()
top.mainloop()

# Start the thread in the background
t = threading.Thread(target = threaded_function)
t.start()
Salin selepas log masuk

Dalam ini pelaksanaan, benang GUI terus responsif manakala threaded_function berjalan di latar belakang. Baris Gilir digunakan untuk menyampaikan data antara dua utas. Apabila fungsi helloCallback dipanggil, ia menambahkan item pada baris gilir yang kemudiannya diambil oleh threaded_function dan diproses.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah GUI Tkinter daripada Membeku Semasa Menunggu Benang untuk Selesai?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan