पर आधारित टिंकर विंडो को गतिशील रूप से अपडेट करना मैं एक प्रोग्राम लिखने की कोशिश कर रहा हूं जो एक सीरियल पोर्ट कनेक्शन से डेटा प्राप्त करता है और उस डेटा के आधार पर वास्तविक समय में टिंकर विंडो को स्वचालित रूप से अद्यतन करता है।सीरियल डेटा
serialdata = []
data = True
class SensorThread(threading.Thread):
def run(self):
serial = serial.Serial('dev/tty.usbmodem1d11', 9600)
try:
while True:
serialdata.append(serial.readline())
except KeyboardInterrupt:
serial.close()
exit()
class GuiThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.root = Tk()
self.lbl = Label(self.root, text="")
def run(self):
self.lbl(pack)
self.lbl.after(1000, self.updateGUI)
self.root.mainloop()
def updateGUI(self):
msg = "Data is True" if data else "Data is False"
self.lbl["text"] = msg
self.root.update()
self.lbl.after(1000, self.updateGUI)
if __name == "__main__":
SensorThread().start()
GuiThread().start()
try:
while True:
# A bunch of analysis that sets either data = True or data = False based on serialdata
except KeyboardInterrupt:
exit()
चल रहा है यह मुझे इस त्रुटि देता है:
Exception in thread Thread-2: Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/threading.py", line 522, in __bootstrap_inner self.run() File "analysis.py", line 52, in run self.lbl1.pack() File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", line 1764, in pack_configure + self._options(cnf, kw)) RuntimeError: main thread is not in main loop
मैं खिड़की है कि समय-समय पर मुख्य थ्रेड से मौजूदा डेटा हो जाता है और खिड़की अपडेट हो जाता है, इस तरह के लिए एक अलग थ्रेड बनाने की कोशिश की
जब मैं इस त्रुटि को Google करता हूं, तो मुझे ज्यादातर पोस्ट मिलती हैं जहां लोग खिड़की से दो अलग-अलग धागे से बातचीत करने की कोशिश कर रहे हैं, लेकिन मुझे नहीं लगता कि मैं ऐसा कर रहा हूं। कोई विचार? बहुत बहुत धन्यवाद!
क्या आपने टीके भाग को थ्रेड में नहीं चलाने का प्रयास किया था? मैं सिर्फ थ्रेड में सीरियल पोर्ट सामान चलाता हूं और टीके सामान मुख्य प्रक्रिया में रह सकता है। मुझे संदेह है कि काम कर सकता है ... –
सीरियल पोर्ट डेटा और डेटा विश्लेषण लूप के लिए एक और थ्रेड प्राप्त करने के लिए एक थ्रेड की तरह? मैं उसे एक शॉट दूंगा। – user1363445