दिलचस्प पोस्ट
'प्रारंभिक संचार पैकेट पढ़ने' पर MySQL सर्वर से कनेक्शन खो गया, सिस्टम त्रुटि: 0 क्या {…} जबकि (0) – इसके लिए क्या अच्छा है? क्या डेटाबेस कॉलम में एक सीमांकित सूची को वास्तव में खराब रखा जा रहा है? एसक्यूएल – 2 दशमलव स्थानों पर बंद गोल IPhone में एक पारदर्शी पीएनजी छवि को कैसे टिंट करें? क्या एक सी + + डीकंपलर है? कैसे अपाचे mod_rewrite डिबग करने के लिए मुझे कैसे पता चलेगा कि कोई जनरेटर प्रारंभ से खाली है या नहीं? जावास्क्रिप्ट में एक मैट्रिक्स के कॉलम (ट्रांसेसिटी) के साथ पंक्तियों को स्वैप करें क्या कोई सही आबादी का उपयोग करता है? प्राथमिक कुंजी या अद्वितीय सूचकांक? OpenGL शेडर के लिए स्पष्ट बनाम स्वचालित विशेषता स्थान बाध्यकारी मैं एक ट्विटर बूटस्ट्रैप मोडल बॉक्स की डिफ़ॉल्ट चौड़ाई कैसे बदल सकता हूँ? प्रोग्रामिंग में "परमाणु" का क्या अर्थ है? क्या होता है जब आप एक std :: सेट के तत्व को संशोधित करते हैं?

टंकिनर: विधि के बाद कैसे उपयोग करें

हे मैं अजगर के लिए नया हूँ और मेरे गुइ के लिए टंकिनर का उपयोग कर रहा हूं। "बाद" विधि का उपयोग करने में मुझे परेशानी हो रही है लक्ष्य हर 5 सेकंड में एक यादृच्छिक पत्र प्रकट करना है।

यहां मेरा कोड है:

import random import time from tkinter import * root = Tk() w = Label(root, text="GAME") w.pack() frame = Frame(root, width=300, height=300) frame.pack() L1 = Label(root, text="User Name") L1.pack(side=LEFT) E1 = Entry(root, bd =5) E1.pack(side=LEFT) tiles_letter = ['a', 'b', 'c', 'd', 'e'] while len(tiles_letter) > 0: rand = random.choice(tiles_letter) tile_frame = Label(frame, text=rand) tile_frame.pack() frame.after(500) tiles_letter.remove(rand) # remove that tile from list of tiles root.mainloop() 

कोई मुझे मदद कर सकता है — समस्या निश्चित रूप से फ़्रेम है। बाद (500): मुझे यकीन नहीं है कि "फ्रेम" का उपयोग करने के लिए सही है और मैं नहीं जानता कि कौन सा तर्क 500 के बाद होता है।

धन्यवाद

वेब के समाधान से एकत्रित समाधान "टंकिनर: विधि के बाद कैसे उपयोग करें"

आपको समय की देरी के बाद कहा जाने वाला फ़ंक्शन देना होगा, जिसके बाद दूसरा तर्क होगा:

के बाद (देरी_एमएस, कॉलबैक = कोई नहीं, * आर्ग्स)

किसी अलार्म कॉलबैक को एक निश्चित समय के बाद कहा जाता है।

तो आप वास्तव में क्या करना चाहते हैं यह है:

 tiles_letter = ['a', 'b', 'c', 'd', 'e'] def add_letter(): rand = random.choice(tiles_letter) tile_frame = Label(frame, text=rand) tile_frame.pack() root.after(500, add_letter) tiles_letter.remove(rand) # remove that tile from list of tiles root.after(0, add_letter) # add_letter will run as soon as the mainloop starts. root.mainloop() 

कॉलबैक फ़ंक्शन के अंदर कॉल करने के after कॉल को फिर से दोहराए जाने के लिए फ़ंक्शन को शेड्यूल करने की आवश्यकता है, क्योंकि केवल एक बार दिए गए फ़ंक्शन को निष्पादित करने के after । यह दस्तावेज़ीकरण में भी उल्लेख किया गया है:

कॉलबैक को केवल इस विधि के प्रत्येक कॉल के लिए एक बार कहा जाता है। कॉलबैक को कॉल करने के लिए, आपको कॉलबैक को अपने अंदर पुन: पंजीकृत करना होगा

ध्यान दें कि आपका उदाहरण tiles_letter में सभी प्रविष्टियों को समाप्त करने के तुरंत बाद एक अपवाद फेंक देगा, इसलिए उस स्थिति को संभालने के लिए आपको अपना तर्क बदलना होगा, चाहे जो भी आप चाहते हैं यह आसान बनाने के लिए add_letter की शुरुआत में एक चेक जोड़ना आसान होगा, यह सुनिश्चित करने के लिए कि सूची खाली नहीं है, और सिर्फ अगर return तो:

 def add_letter(): if not tiles_letter: return rand = random.choice(tiles_letter) tile_frame = Label(frame, text=rand) tile_frame.pack() root.after(500, add_letter) tiles_letter.remove(rand) # remove that tile from list of tiles