مشاركة البيانات بين النافذة الرئيسية والخيط في PyQt
غالبًا ما تحتاج التطبيقات متعددة الخيوط إلى مشاركة البيانات بين خيط النافذة الرئيسية وخيوط العامل. لضمان سلامة الخيط والتواصل المناسب، تقدم PyQt العديد من الأساليب العملية.
الخيار 1: إشارة مباشرة إلى النافذة الرئيسية
في هذا النهج، إشارة إلى النافذة الرئيسية يتم تمرير النافذة إلى الموضوع. يمكن للخيط بعد ذلك الوصول مباشرة إلى البيانات الموجودة في النافذة الرئيسية، مثل قيمة صندوق الدوران.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
# ...
الخيار 2: الإشارات والفتحات يستخدم PyQt الإشارات والفتحات للتواصل بين الكائنات. في هذا الأسلوب، يرسل مؤشر ترابط العامل إشارات عندما تتغير البيانات، وتتعامل وظائف فتحة النافذة الرئيسية مع التحديثات.
class MainWindow(QtGui.QWidget): تعريف __init__(الذات): #... self.worker = عامل () self.worker.beep.connect(self.update) #... عامل الفصل (QtCore.QThread): صوت تنبيه = QtCore.pyqtSignal(int) تعريف __init__(الذات): سوبر (عامل، ذاتي).__init__() # ...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__()
# ...
ما هو الخيار الذي يجب استخدامه؟ يعتمد الاختيار على احتياجات الخيط ومستوى التحكم المطلوب.
الأدوات ليست آمنة للخيوط. لذلك، من الضروري استخدام الإشارات والفتحات للتعامل مع الاتصال بين الخيط والنافذة الرئيسية. يمكن أن يؤدي التلاعب المباشر بالأدوات من عدة سلاسل إلى سلوك غير متوقع.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3