2010-12-09 13 views
15

Tkinter खिड़कियों का आकार निम्न विधियों के माध्यम से नियंत्रित किया जा सकता:फ़्रेम की न्यूनतम और अधिकतम ऊंचाई या चौड़ाई कैसे सेट करें?

.minsize() 
.maxsize() 
.resizable() 

वहाँ Tkinter या टीटीके फ्रेम्स के आकार को नियंत्रित करने के बराबर तरीके हैं?

@Bryan: मैं निम्नलिखित करने के लिए अपने frame1.pack कोड बदल दिया है:

frame1.pack(fill='both', expand=True) 
frame1.bind('<Configure>', maxsize) 

और मैं इस ईवेंट हैंडलर कहा:

# attempt to prevent frame from growing past a certain size 
def maxsize(event=None): 
    print frame1.winfo_width() 
    if frame1.winfo_width() > 200: 
     print 'frame1 wider than 200 pixels' 
     frame1.pack_propagate(0) 
     frame1.config(width=200) 
     return 'break' 

ऊपर ईवेंट हैंडलर पता लगाता है कि एक फ्रेम की चौड़ाई भी है बड़ा, लेकिन आकार में वृद्धि होने से रोकने में असमर्थ है। क्या यह टिंकर की सीमा है या मैंने आपकी व्याख्या को गलत समझा है?

+1

मुझे लगता है कि आपको गलत समझा जाता है। मेरा स्पष्टीकरण यह इंगित कर रहा था कि यदि आप विस्तृत सेट के साथ गलत पर पैक करते हैं और किसी को सेट नहीं करते हैं, तो फ्रेम की स्थिर चौड़ाई होगी और बढ़ेगी या कम नहीं होगी। यदि फ्रेम अपने माता-पिता के कारण आकार बदलता है, तो फ्रेम पर pack_propagate को सेट करने पर कोई प्रभाव नहीं पड़ता है, तो आपको इसे माता-पिता पर सेट करने की आवश्यकता होती है। pack_propagate केवल यह सेट करता है कि फ्रेम अपनी सामग्री के आधार पर आकार बदलता है, न कि उसके माता-पिता के आधार पर। –

+0

@ ब्रायन: आपके अनुवर्ती के लिए धन्यवाद। मैं अब समझता हूँ। – Malcolm

उत्तर

20

फ्रेम को न्यूनतम या निश्चित आकार में मजबूर करने के लिए कोई भी जादू कार्य नहीं है। हालांकि, आप निश्चित रूप से फ्रेम को चौड़ाई और ऊंचाई देकर फ्रेम के आकार को मजबूर कर सकते हैं। फिर आपको संभावित रूप से दो और चीजें करना पड़ता है: जब आप इस विंडो को एक कंटेनर में डालते हैं तो आपको यह सुनिश्चित करने की आवश्यकता होती है कि ज्यामिति प्रबंधक विंडो को छोटा या विस्तार नहीं करता है। दो, यदि फ्रेम अन्य विजेट के लिए एक कंटेनर है, तो ग्रिड या पैक प्रसार को बंद करें ताकि फ्रेम अपनी सामग्री को फिट करने के लिए छोटा या विस्तार न हो।

नोट, हालांकि, यह आपको एक आंतरिक फ्रेम से छोटे होने के लिए विंडो का आकार बदलने से नहीं रोकेगा। उस स्थिति में फ्रेम सिर्फ फिसल जाएगा।

import Tkinter as tk 

root = tk.Tk() 
frame1 = tk.Frame(root, width=100, height=100, background="bisque") 
frame2 = tk.Frame(root, width=50, height = 50, background="#b22222") 

frame1.pack(fill=None, expand=False) 
frame2.place(relx=.5, rely=.5, anchor="c") 

root.mainloop() 
+0

स्पष्टीकरण और नमूना कोड के लिए धन्यवाद। मैंने आपके कोड को संशोधित किया और मेरा प्रश्न अपडेट किया। – Malcolm