2012-10-25 16 views
5

मैं अपनी खिड़की को भरने, कहने, लेबल के साथ भरना चाहता हूं और मैं चाहता हूं कि कॉलम वर्तमान विंडो (या बल्कि पैरेंट फ्रेम) आकार से बड़ा हो जाए।मैं TkInter में एक टाइलिंग लेआउट/फ्लो लेआउट कैसे बना सकता हूं?

मैंने grid लेआउट का उपयोग करने का प्रयास किया है, लेकिन फिर मुझे अगली पंक्ति में अगला तत्व कब रखना है, यह जानने के लिए मुझे प्रत्येक पंक्ति की सामग्री के आकार की गणना करना होगा।

कारण मैं पूछता हूं, क्योंकि मैं कुछ प्रकार के टाइल किए गए फ़ाइल आइकन बनाना चाहता हूं।

या अलग से पूछा, क्या स्विंटर के FlowLayout जैसे कुछ है?

उत्तर

7

जब मैं ऐसा कुछ चाहता हूं तो मैं क्या करता हूं एक कंटेनर के लिए टेक्स्ट विजेट का उपयोग करता है। टेक्स्ट विजेट में एम्बेडेड विजेट हो सकते हैं, और वे टेक्स्ट की तरह लपेटते हैं। जब तक आपके विजेट सभी समान ऊंचाई होते हैं तब तक प्रभाव बहुत अच्छा होता है।

उदाहरण के लिए (कट और लेखक के अनुरोध पर सवाल से चिपकाया):

textwidget = tk.Text(master) 
textwidget.pack(side=tk.LEFT, fill=tk.BOTH) 
for f in os.listdir('/tmp'): 
    textwidget.window_create(tk.INSERT, window=tk.Label(textwidget, text=f)) 
+0

वाह! धन्यवाद। कृपया अपने उत्तर में प्रदान किए गए कोड उदाहरण को सम्मिलित करें, इसलिए इसके लिए ढूंढने वाले अगले व्यक्ति को टेक्स्ट विजेट पर दस्तावेज़ों को देखने की आवश्यकता नहीं है :) – devsnd

+0

उपयोगकर्ता अभी भी टेक्स्ट बॉक्स के रूप में 'टेक्स्ट' का उपयोग कर सकता है, और प्रकार बैकस्पेस इत्यादि वाले आइटम को टेक्स्ट या डिलीट करें, जो कि जीयूआई मैनेजर के रूप में इसका उपयोग करने के लिए सबसे अवांछित है। आप 'textwidget.config (state = tk.DISABLED)' के साथ संपादन अक्षम कर सकते हैं। फिर भी, उपयोगकर्ता टेक्स्ट/रिक्त स्थान का चयन कर सकते हैं, और कर्सर टेक्स्ट कर्सर की तरह दिखता है। अंततः उन दो चीजों को निम्नलिखित कोड के साथ भी ठीक किया जा सकता है जो टेक्स्ट बॉक्स के नियमित पृष्ठभूमि रंग में पृष्ठभूमि चयन रंग सेट करता है, और कर्सर को तीर में बदल देता है। 'textwidget.config (selectbackground = textwidget.cget ('background'), कर्सर = 'तीर')' – nitro2k01

+0

@ नाइट्रो 2k01: एक तर्कसंगत सरल समाधान केवल चयन को अक्षम करने वाली कुंजी बाइंडिंग जोड़ना है। साथ ही, जब विजेट अक्षम होता है तो कोई सम्मिलन कर्सर नहीं होगा, इसलिए इसे बदलना आवश्यक नहीं है। –

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