2013-06-09 8 views
13

इस सरल कोड पर विचार करें:tkinter टीटीके विभाजक अभ्यस्त प्रदर्शित

from Tkinter import * 
import ttk 
root= Tk() 
ttk.Label(root, text='Heading Here').grid(row=1, column=1) 
ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5) 
root.mainloop() 

मुझे इस कोड चलाने के लिए, विभाजक लगभग अदृश्य है।
ttk separator not visible
मैंने इसे एक लाल तीर के साथ चिह्नित किया है, यदि आप इसे एक छोटी डॉट प्रकार की चीज़ के रूप में देख सकते हैं।

मैं विभाजक को पूरी क्षैतिज चौड़ाई कैसे फैला सकता हूं, या कम से कम दिखाई दे सकता हूं?

उत्तर

19

विभाजक की एक प्राकृतिक चौड़ाई 1 पिक्सेल है। आपने इसे पांच स्तंभों में स्थान आरक्षित करने के लिए कहा है, लेकिन आपने अनुरोध नहीं किया है कि विभाजक वास्तव में उन पांच स्तंभों को भरें। इसे हल करने के लिए, sticky विशेषता प्रदान करें, जो कहता है "यदि इस विजेट के लिए आवश्यकतानुसार अधिक जगह है, तो विजेट के किनारों को अपने कंटेनर के विशिष्ट किनारों पर" छड़ी "बनाएं।

इस मामले में, आप विभाजक चाहते हैं कि इसके कंटेनर के बाएं और दाएं किनारों पर चिपचिपा हो। चिपचिपा विशेषता मानों के लिए कम्पास के अंक का उपयोग करता है, तो आप चाहते हैं पूर्व के लिए "ई", और "डब्ल्यू" पश्चिम के लिए:

ttk.Separator(...).grid(..., sticky="ew") 
+0

धन्यवाद .. समस्या हल की – oat

0

@ ब्रायन का sticky समाधान ठीक है लेकिन यह केवल मामले के एक भाग को हल करती है, चूंकि विभाजक पूरी क्षैतिज चौड़ाई को कवर नहीं करेगा (जिसे आपने पूछा था)। यहां एक वैकल्पिक समाधान है जिसे आप आवेदन कर सकते हैं: .grid() के बजाय, place() लेआउट का उपयोग करें और स्थिति, चौड़ाई (लंबाई) और यहां तक ​​कि विभाजक की ऊंचाई का पूरा नियंत्रण रखें। सिर्फ वर्तमान मामले (w/किसी भी अतिरिक्त सुविधा ओ) को यह लागू करते हैं और पूर्ण क्षैतिज चौड़ाई, बस को कवर करने के लिए:

ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5) 

बदलें

ttk.Separator(root).place(x=0, y=26, relwidth=1) 

आप 'y सेट कर सकते हैं साथ ' जैसा आपको पसंद। यह भी ध्यान दें कि orient=HORIZONTAL की आवश्यकता नहीं है क्योंकि यह डिफ़ॉल्ट विकल्प है। (`.option() 'लेआउट के उपयोग के विवरण और उदाहरणों के लिए http://effbot.org/tkinterbook/place.htm देखें।)

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