बनाते समय थ्रेड किए गए टिंकर स्क्रिप्ट क्रैश होते हैं मेरे पास एक पायथन स्क्रिप्ट है जो जीयूआई के लिए टिंकर का उपयोग करती है। मेरी छोटी लिपि प्रत्येक एक्स सेकंड में एक टोपवेल विजेट बनाना चाहिए। जब मैं अपना कोड चलाता हूं, तो पहला टोपवेल विजेट सफलतापूर्वक बनाया जाता है, लेकिन जब यह दूसरा बनाता है तो प्रोग्राम क्रैश हो जाता है।दूसरे टोपवेल विजेट
मैं जो कर रहा हूं वह कार्य शुरू करने के लिए बाद की विधि का उपयोग कर रहा है, रूट के मेनलोप के साथ हर 5 सेकंड काउंट करना। हर बार जब इस समारोह को बुलाया जाता है, तो मैं एक सूची में एक टोपवेल विजेट ऑब्जेक्ट जोड़ता हूं और एक नया धागा शुरू करता हूं जो आशा करता है कि नया मेनलोप चल रहा है।
यदि कोई इस समस्या को समझ सकता है तो मैं बहुत आभारी रहूंगा। वैसे, यह एक छोटी सी लिपि है जिसे मैं वर्तमान में अपनी समस्या का समाधान करने के लिए उपयोग कर रहा हूं, जो मुझे अपने असली स्कूल प्रोजेक्ट के साथ जाने से रोक रहा है।
कोड:
import threading,thread
from Tkinter import *
def startCounting():
global root
global topLevelList
global classInstance
topLevelList.append (Toplevel())
topLevelList[len(topLevelList)-1].title("Child")
classInstance.append(mainLoopThread(topLevelList[len(topLevelList)-1]))
root.after(5000,startCounting)
class mainLoopThread(threading.Thread):
def __init__(self,toplevelW):
self.toplevelW = toplevelW
threading.Thread.__init__(self)
self.start()
def run(self):
self.toplevelW.mainloop()
global classInstance
classInstance = []
global topLevelList
topLevelList = []
global root
root = Tk()
root.title("Main")
startCounting()
root.mainloop()
त्वरित जवाब के लिए धन्यवाद। मैं दस्तावेज़ों की जांच करूंगा। – user430825
@user, आपका स्वागत है! –
मुझे इस प्रतिबंध का सामना करना पड़ा है और यह वास्तव में उपयोग की जाने वाली रणनीति है। मेरे पास एक तरीका है जो सभी कतारों की जांच करता है। मैं फिर रूट को कॉल करके Tkinter के मुख्य पाश के साथ उस विधि को पंजीकृत करता हूं। बाद में (ms, my_method)।My_method में अंतिम कॉल रूट करने के लिए एक और कॉल है। इसके बाद my_method लगातार मुख्य लूप के साथ खुद को पुनः पंजीकृत करता है। यह महत्वपूर्ण है कि my_method में अपवाद आपको मेनलोप के साथ पंजीकरण करने से चूकने का कारण नहीं बनाते हैं। आप कोशिश कर सकते हैं/अंत में अंत में अपने कॉल रूट पर रखना चाहते हैं। –