2009-02-19 14 views
30

यह वह कोड है जो मुझे परेशानी दे रहा है।टिंकर फ्रेम को अपनी सामग्री में फिट करने के लिए सिकुड़ने से कैसे रोकें?

f = Frame(root, width=1000, bg="blue") 
f.pack(fill=X, expand=True) 

l = Label(f, text="hi", width=10, bg="red", fg="white") 
l.pack() 

यदि मैं लेबल के साथ लाइनों पर टिप्पणी करता हूं, तो फ्रेम सही चौड़ाई के साथ प्रदर्शित होता है। हालांकि, लेबल जोड़ना फ़्रेम को लेबल के आकार में कम करने लगता है। क्या ऐसा होने से रोकने के लिए कोई रास्ता है?

उत्तर

43

डिफ़ॉल्ट रूप से, टीके फ्रेम अपनी सामग्री फिट करने के लिए संकीर्ण या बढ़ते हैं, जो आप 99% समय चाहते हैं। इस सुविधा का वर्णन करने वाला शब्द "ज्यामिति प्रचार" है। pack (और similar onegrid के लिए उपयोग करते समय ज्यामिति प्रचार चालू या बंद करने के लिए command) है।

आप पैक का उपयोग कर रहे हैं, वाक्य रचना होगा:

f.pack_propagate(0) 

या शायद root.pack_propagate(0), जो विजेट (रों) आप वास्तव में प्रभावित करने के लिए चाहते हैं पर निर्भर करता है।

कहा जा रहा है कि, उस समय के अधिकांश समय में आपको आकार को गणना करने देना चाहिए। जब आप अपने जीयूआई से ज्यामिति प्रसार को बदलते हैं तो संकल्प में परिवर्तन, फोंट में परिवर्तन इत्यादि के लिए अच्छा जवाब नहीं देंगे। टिंकर के ज्यामिति प्रबंधक (pack, place और grid) उल्लेखनीय रूप से शक्तिशाली हैं। उस शक्ति का लाभ उठाना सीखें।

+1

यह 'self.pack_propagate (0)' भी हो सकता है, यदि 'फ्रेम' से व्युत्पन्न विजेट वर्ग के '__init __()' जैसी विधि में किया गया हो - जैसा आमतौर पर उपयोग किया जाने वाला 'क्लास एप्लिकेशन (फ़्रेम) में होता है: मूर्खता – martineau

+0

पहला उदाहरण मेरे लिए काम नहीं करता है। खिड़की का सही आकार है, लेकिन विजेट स्क्रीन पर दिखाई नहीं दे रहे हैं। दूसरा उदाहरण मेरे लिए काम करता है सबकुछ स्क्रीन पर दी गई चौड़ाई/ऊंचाई के साथ ठीक दिखता है! +1 – Bas

+0

@ बास: मूल उदाहरण में, फ़्रेम "ऊंचाई" पास नहीं होती है और 0 पर डिफ़ॉल्ट होती है, इसलिए जब प्रचार बंद हो जाता है, तो ऊंचाई 0 रहती है और आपको लेबल नहीं दिखाई देता है। लेबल देखने के लिए आपको फ्रेम ऊंचाई = 20 या उन पंक्तियों के साथ कुछ सेट करना होगा। – Gary02127

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

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