python - RuntimeError: main thread is not in main loop while using tkinter.simpledialog -
यहाँ मेरा कोड है:
import थ्रेडिंग आयात tkinter.simpledialog def showDialog (evt) : Dlg = tkinter.simpledialog.SimpleDialog (रूट, टेक्स्ट = 'टेस्ट!', बटन = ['ओके']) dlg.go () डीईएफ़ टेस्ट (): थ्रेडिंग.थ्रेड (लक्ष्य = रूट.इवेंट_जानेरेट, आर्ग्स = (' & Lt; & lt; showDialog & gt; & gt; '))। प्रारंभ () रूट = tkinter.Tk () root.bind (' & lt; showDialog & gt; ', showDialog) tkinter.Button (text =' showDialog ' कमांड = टेस्ट) .पैक () root.mainloop ()
मैं इस कोड को पायथन 3.4 के साथ चलाता हूं
पहली बार मैं showDialog बटन पर क्लिक करता हूं यह पूरी तरह से कार्य करता है < / P>
लेकिन अगर मैं ठीक दबाता हूं और बटन को फिर से क्लिक करता हूं, तो वह एक रनटाइम त्रुटि बढ़ाता है:
थ्रेड में अपवाद धागा -2: ट्रेसबैक (सबसे हाल का कॉल अंतिम): फ़ाइल "डी : \ Program Files \ Python34 \ lib \ threading.py ", पंक्ति 921, _bootstrap_inner में self.run () फ़ाइल" डी: \ प्रोग्राम फ़ाइलें \ Python34 \ lib \ threading.py ", पंक्ति 869, चलाने self._target में ( * Self._args, ** self._kwargs) फ़ाइल "डी: \ प्रोग्राम फ़ाइलें \ Python34 \ lib \ tkinter \ __ init__.py ", पंक्ति 1501, event_generate self.tk.call (args) रनटाइम त्रुटि: मुख्य धागा मुख्य लूप में नहीं है
हाल ही में, अजगर सीखने वाला अजगर, यह कोड सिर्फ एक डेमो है। मैं उप धागा में बटन दबाकर कुछ काम करना चाहता हूं, क्योंकि इसमें कुछ सेकंड खर्च होंगे और मैं यूआई को नहीं रोकना चाहता। जब काम किया जाता है, तो यह एक संवाद दिखाएगा।?
क्या कोई कृपया मुझे बता सकता है कि मैं यह कैसे टंकिनर का उपयोग कर सकता हूं और यह समस्या क्यों होती है?
धन्यवाद! मेरी खराब अंग्रेजी।
जीयूआई के साथ थ्रेड्स मिश्रण करना, और विशेष रूप से टीके, मुश्किल है। मैं सभी नियमों को नहीं जानता, लेकिन अप्रत्याशित अपवाद और डेडलॉक दो समस्याएं हैं मैं थोड़ा आश्चर्यचकित हूं कि मुख्य थ्रेड और मेनलोूप से एक अलग धागे में एक घटना उत्पन्न करना एक बार भी काम करती थी। (आप ऐसा क्यों कर रहे हैं?) एक सरलीकृत फ़ंक्शन जो एक ही धागे में चलते हैं, लगातार काम करते हैं।
डीईफ़ टेस्ट (): root.event_generate ('& lt; & lt; showDialog & gt; & gt;' )
Comments
Post a Comment