ऐसा लगता है कि वस्तु है कि इस विधि खिड़की पैरामीटर के रूप में पारित कर दिया इससे पहले कि नष्ट हो अपने स्वयं के पाश के साथ जारी रखने के लिए इंतजार कर रहा है कहता है ..."wait_window" विधि क्या करती है?
Misc
वर्ग के डॉक तार से, हम देख सकते हैं:
def wait_window(self, window=None): """Wait until a WIDGET is destroyed. If no parameter is given self is used."""
पहली नज़र में, यह इस पद्धति का एक Toplevel
मोडल बना सकते हैं की तरह लगता है, लेकिन यह सच नहीं है। Toplevel
मोडल बनाने के लिए, हमें grab_set()
विधि का उपयोग करना होगा।
मैं अन्य स्पष्टीकरण के आसपास देखने की है:
wait_window
निर्धारित विजेट के रूप में पैरामीटर नष्ट नहीं है पारित कर दिया जब तक वापस नहीं जा रहा है।
एक अन्य जगह से:
wait_window(widget)
- एक स्थानीय घटना के लिए दिया विजेट नष्ट हो इंतजार कर रहा है कि बनाता है। यह लूप एप्लिकेशन के मेनलोप को प्रभावित नहीं करता है।
effbot प्रलेखन से, हमने:
wait_window
एक स्थानीय घटना पाश में प्रवेश, और वापस नहीं करता है जब तक दिया खिड़की नष्ट हो जाता है (या तो नष्ट विधि, या स्पष्ट रूप से के माध्यम से विंडो प्रबंधक के माध्यम से):widget.wait_window(window)
क्या वास्तव में एक के लिए इसका मतलब window
window
(स्वयं) के लिए प्रतीक्षा करें?
ऐसा लगता है कि wait_window
पर कॉल के बाद आने वाला कोड तब तक निष्पादित नहीं होता है जब तक कि उसी विधि में पारित विंडो नष्ट नहीं होती है।
from tkinter import *
def on_win_request(parent):
dialog = Toplevel()
parent.wait_window(dialog)
# executed only when "dialog" is destroyed
print("Mini-event loop finished!")
r = Tk()
b = Button(r, text='New Window', command=lambda: on_win_request(r))
b.pack()
b2 = Button(r, text='Hello!', command=lambda: print("hello"))
b2.pack()
r.mainloop()
"Mini-event loop finished!"
प्रिंट किया जाएगा केवल जब स्थानीय Toplevel
विजेट dialog
कहा जाता है को नष्ट कर दिया जाता है: अगले कार्य उदाहरण में, हम क्या सिर्फ इतना कहा पर एक प्रमाण देख सकते हैं।
तो, इस विधि का उपयोग करने के लिए वास्तव में मुझे किस वास्तविक परिस्थितियों में उपयोग करना चाहिए?
मुझे लगता है कि जब तक संवाद विंडो नष्ट नहीं हो जाती है तब तक मैं निर्माता को एप्लिकेशन को अवरुद्ध करता हूं। आप माता-पिता पर इंतजार नहीं करना चाहेंगे, क्योंकि आप केवल तब तक अवरुद्ध करना चाहते हैं जब तक कि उपयोगकर्ता बातचीत के साथ इंटरैक्ट नहीं करता। मैंने उचित जवाब नहीं दिया है क्योंकि मैंने उम्र में जीयूआई प्रोग्रामिंग नहीं की है और मुझे यकीन नहीं है कि मुख्य धागा जीयूआई कार्यक्रमों के साथ कैसे काम करता है। – Jmac
@Jmac मैं माता-पिता पर इंतजार क्यों नहीं करना चाहूंगा? जहां तक मैंने समझा है, माता-पिता संवाद के लिए इंतजार कर रहे हैं। असल में क्या होगा कि जिस खिड़की के लिए माता-पिता इंतजार कर रहे हैं, अपने स्थानीय लूप में प्रवेश करता है। – nbro
@Jmac जहां तक यह 'effbot' पर बताया गया है,' wait_window' स्थानीय ईवेंट लूप में प्रवेश करता है, और दिए गए विंडो तक वापस नहीं आता है क्योंकि पैरामीटर नष्ट हो जाता है। तो, अगर हम माता-पिता पर 'wait_window' कहते हैं, तो हम स्थानीय लूप पर प्रवेश करेंगे (मुझे लगता है कि संवाद पर, या शायद नहीं?) और जब तक संवाद नष्ट नहीं हो जाता तब तक हम अभिभावक को नियंत्रण वापस नहीं करेंगे .. – nbro