2012-01-19 13 views
7

तो मैं इस अजगर कोड चलाएँ:"ज्यामिति()" विधि देरी के साथ क्यों काम करती है?

from Tkinter import *; w = Tk(); w.geometry("640x480"); print(w.geometry()) 

मैं मिल जाएगा "1x1 + 0 + 0" उत्पादन। । (हो सकता है कि किसी को भी जानता है मैं क्या जरूरत है: लगता है

>>> from Tkinter import *; w = Tk(); w.geometry("640x480") 
'' 
>>> w.geometry() 
'640x480+101+73' 

यह ज्यामिति तुरन्त लागू नहीं होती है, कुछ और की जरूरत है: लेकिन अगर मैं दुभाषिया शुरू करने और दो अलग-अलग आदेशों के रूप में इस पर अमल, मैं पूरी तरह से अलग उत्पादन मिल जाएगा ? अद्यतन करने के लिए ज्यामिति inplace क्रम में करने के लिए मैं यह करने के लिए सही ढंग से केंद्र/स्थिति मुख्य और बच्चे खिड़कियों की जरूरत

+0

अच्छा सवाल। मुझे लगता है कि विंडो बनाने और इसके आकार को पढ़ने के बीच कुछ देरी का समय है। आश्चर्यजनक रूप से, अगर मैं एक प्रिंट "foo" डाल दिया; पिछले 2 कथनों के बीच में यह काम करता है, लेकिन अगर मैं उनमें से दो डालता हूं तो पाइथन लटकता प्रतीत होता है। – jgritty

उत्तर

6

एक खिड़की (या एक विजेट) पर update_idletasks() कॉलिंग अद्यतन करने के लिए अपने ज्यामिति बाध्य करेगा।

ज्यामिति तक आवेदन अपने निष्क्रिय कार्यों को अपडेट किया गया सही नहीं है:

यहाँ Tkinter संदर्भ से थोड़ी पाठ का टुकड़ा है। विशेष रूप से, सभी ज्यामिति प्रारंभ में "1x1 + 0 + 0" होती हैं जब तक कि विगेट्स और ज्यामिति प्रबंधक ने अपनी स्थिति पर बातचीत नहीं की हो।

0

यह पूरा करता है, लेकिन गलत जवाब देता है:।

from Tkinter import *; w = Tk(); w.geometry("640x480"); print "foo"; print(w.geometry()) 

'' 
foo 
1x1+0+0 

यह लटकता प्रतीत होता है:

from Tkinter import *; w = Tk(); w.geometry("640x480"); print "foo"; print "foo"; print(w.geometry()) 

केवल एक कीबोर्ड इंटरप्ट मुझे बाहर निकालने लगता है।

ज़रूर पर्याप्त, इस ठीक से काम प्रतीत होता है:

from Tkinter import *; w = Tk(); w.geometry("640x480"); w.update_idletasks(); print(w.geometry()) 

'' 
640x480+5+27 
+0

मुझे लगता है कि यह ** ** ** काम नहीं करता ... – joaquin

+0

अच्छा बिंदु। मेरा मतलब सिर्फ इस अर्थ में काम था कि यह कभी पूरा हो जाता है। – jgritty

संबंधित मुद्दे