Berkongsi Data Antara Tetingkap Utama dan Benang dalam PyQt
Aplikasi berbilang benang selalunya perlu berkongsi data antara utas tetingkap utama dan utas pekerja. Untuk memastikan keselamatan benang dan komunikasi yang betul, PyQt menawarkan beberapa pendekatan praktikal.
Pilihan 1: Rujukan Terus ke Tetingkap Utama
Dalam pendekatan ini, rujukan kepada yang utama tetingkap dihantar ke benang. Urutan kemudiannya boleh terus mengakses data dalam tetingkap utama, seperti nilai kotak spin.
<code class="python">class MainWindow(QtGui.QWidget): def __init__(self): # ... self.worker = Worker(self) # ... class Worker(QtCore.QThread): def __init__(self, host_window): super(Worker, self).__init__() self.host = host_window # ...</code>
Pilihan 2: Isyarat dan Slot
Penggunaan PyQt isyarat dan slot untuk berkomunikasi antara objek. Dalam pendekatan ini, benang pekerja memancarkan isyarat apabila data berubah dan fungsi slot tetingkap utama mengendalikan kemas kini.
<code class="python">class MainWindow(QtGui.QWidget): def __init__(self): # ... self.worker = Worker() self.worker.beep.connect(self.update) # ... class Worker(QtCore.QThread): beep = QtCore.pyqtSignal(int) def __init__(self): super(Worker, self).__init__() # ...</code>
Pilihan Mana Yang Perlu Digunakan?
pilihan bergantung pada keperluan urutan dan tahap kawalan yang diperlukan.
Pertimbangan Keselamatan Benang
Widget ialah tidak selamat untuk benang. Oleh itu, adalah penting untuk menggunakan isyarat dan slot untuk mengendalikan komunikasi antara benang dan tetingkap utama. Manipulasi langsung widget daripada berbilang urutan boleh membawa kepada tingkah laku yang tidak dijangka.
Atas ialah kandungan terperinci Bagaimana untuk Berkongsi Data Antara Tetingkap Utama dan Benang dalam PyQt: Rujukan Terus lwn. Isyarat dan Slot?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!