2012-06-07 15 views
11

मैंने अभी एक कोड लिखा है जो एक विंडो बनाता है (टीकिंटर का उपयोग करके) और एक काम करने वाला बटन प्रदर्शित करता है।पायथन में एक बटन पर स्थिति की स्थापना?

b = Button(master, text="get", width=10, command=callback) 

लेकिन मैं इस के नीचे कई बटन रखना चाहता हूं।

आप बटन की पंक्ति और कॉलम कैसे सेट करते हैं? मैंने row = 0, column = 0, जोड़ने की कोशिश की लेकिन यह काम नहीं करेगा।

धन्यवाद

उत्तर

12

astynax सही है। आपके द्वारा दिए गए उदाहरण का पालन करने के लिए:

MyButton1 = Button(master, text="BUTTON1", width=10, command=callback) 
MyButton1.grid(row=0, column=0) 

MyButton2 = Button(master, text="BUTTON2", width=10, command=callback) 
MyButton2.grid(row=1, column=0) 

MyButton3 = Button(master, text="BUTTON3", width=10, command=callback) 
MyButton3.grid(row=2, column=0) 

बटनों की 3 पंक्ति बनाना चाहिए। ग्रिड का उपयोग पैक का उपयोग करने से बहुत बेहतर है। हालांकि, अगर आप एक बटन पर ग्रिड का उपयोग करते हैं और दूसरे पर पैक करते हैं तो यह काम नहीं करेगा और आपको एक त्रुटि मिलेगी।

+4

मैं सलाह देता हूं कि एक दूसरे को पसंद न करें - प्रत्येक की ताकत सीखें, और नौकरी के लिए सही टूल का उपयोग करें। पैक ग्रिड की तरह लेआउट समस्याओं के एक निश्चित वर्ग के लिए उल्लेखनीय शक्तिशाली और आसान है। वे प्रत्येक दूसरे की तुलना में कुछ समस्याओं को आसानी से हल कर सकते हैं। –

3

Grid Geometry Manager का प्रयास करें:

btns = [ 
    (lambda ctl: ctl.grid(row=r, column=c) or ctl)(
     Button(text=str(1 + r * 3 + c))) 
    for c in (0,1,2) for r in (0,1,2)] 

परिणाम:

[1][2][3] 
[4][5][6] 
[7][8][9] 
+1

-1 आपका कोड बटन को तुरंत चालू करता है लेकिन आपकी चर 'बीटीएनएस' किसी की सूची नहीं है ... – FabienAndre

+0

@FabienAndre, निश्चित! टिप्पणी के लिए धन्यवाद! – astynax

36

एक विजेट को प्रदर्शित करने के कारण यह आवश्यक है कि आप इसे टिकिनर को "ज्यामिति प्रबंधक" कहने के साथ उपयोग करते हैं। तीन प्रबंधक grid, pack और place हैं। प्रत्येक में ताकत और कमजोरियां होती हैं। इन तीन प्रबंधकों को सभी विगेट्स पर विधियों के रूप में लागू किया जाता है।

ग्रिड, जैसा कि इसके नाम से तात्पर्य है, एक ग्रिड में विजेट डालने के लिए एकदम सही है। आप पंक्तियों और स्तंभों, पंक्ति और स्तंभ फैला, पैडिंग, आदि निर्दिष्ट कर सकते हैं

उदाहरण:

b = Button(...) 
b.grid(row=2, column=3, columnspan=2) 

पैक एक बॉक्स रूपक का उपयोग करता है, एक की तरफ से एक साथ दे आप "पैक" विजेट कंटेनर। पैक सभी लंबवत या सभी क्षैतिज लेआउट पर बेहद अच्छा है। टूलबार, उदाहरण के लिए, जहां विजेट क्षैतिज रेखा में गठबंधन होते हैं, पैक का उपयोग करने के लिए एक अच्छी जगह हैं।

उदाहरण:

b = Button(...) 
b.pack(side="top", fill='both', expand=True, padx=4, pady=4)` 

जगह कम से कम इस्तेमाल किया ज्यामिति प्रबंधक है। जगह के साथ आप एक विजेट के लिए सटीक एक्स/वाई स्थान और सटीक चौड़ाई/ऊंचाई निर्दिष्ट करते हैं। इसमें कुछ अच्छी विशेषताएं हैं जैसे पूर्ण या सापेक्ष निर्देशांक का उपयोग करने में सक्षम होना (उदाहरण के लिए: आप विजेट को 10,10 पर, या विगेट्स चौड़ाई या ऊंचाई के 50% पर रख सकते हैं)।

grid और pack के विपरीत, place का उपयोग करके, पैरेंट विजेट को अंदर दिए गए सभी विजेटों को फिट करने के लिए विस्तार या पतन का कारण नहीं बनता है।

उदाहरण:

b = Button(...) 
b.place(relx=.5, rely=.5, anchor="c") 
उन तीन ज्यामिति प्रबंधकों तुम सिर्फ लेआउट के किसी भी प्रकार आप कल्पना कर सकते के बारे में क्या कर सकते हैं के साथ

+0

वाह! धन्यवाद। बहुत उपयोगी – EatMyApples

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