2009-04-16 10 views
14
from Tkinter import * 


master = Tk() 

listbox = Listbox(master) 
listbox.pack() 
listbox.insert(END, "a list entry") 

for item in ["one", "two", "three", "four"]: 
    listbox.insert(END, item) 

listbox2 = Listbox(master) 
listbox2.pack() 
listbox2.insert(END, "a list entry") 

for item in ["one", "two", "three", "four"]: 
    listbox2.insert(END, item) 

master.mainloop() 

उपरोक्त कोड दो सूची बॉक्स के साथ tkinter विंडो बनाता है। लेकिन यदि आप दोनों से मूल्यों को पुनर्प्राप्त करना चाहते हैं, तो एक समस्या है क्योंकि जैसे ही आप एक मूल्य का चयन करते हैं, यह आपके द्वारा चुने गए किसी भी चीज़ को अचयनित करता है।दो सूची बॉक्स से एक ही समय में कैसे चयन करें?

क्या यह सिर्फ एक सीमित डेवलपर्स के साथ रहना है?

उत्तर

23

संक्षिप्त उत्तर: सभी सूची बॉक्स विजेट्स के exportselection विशेषता का मूल्य गलत या शून्य पर सेट करें।

लिस्टबॉक्स विजेट के a pythonware overview से:

डिफ़ॉल्ट रूप से, चयन एक्स चयन तंत्र को निर्यात किया जाता है। यदि आप में स्क्रीन पर एक से अधिक सूची बॉक्स हैं, तो यह वास्तव में खराब उपयोगकर्ता के लिए चीजों को गड़बड़ करता है। यदि वह एक सूची बॉक्स में कुछ चुनता है, और फिर किसी अन्य में कुछ चुनता है, तो मूल चयन साफ़ हो जाता है। यह आमतौर पर ऐसे मामलों में तंत्र को अक्षम करने का एक अच्छा विचार है। निम्न उदाहरण में, तीन listboxes एक ही संवाद में किया जाता है:

b1 = Listbox(exportselection=0) 
for item in families: 
    b1.insert(END, item) 

b2 = Listbox(exportselection=0) 
for item in fonts: 
    b2.insert(END, item) 

b3 = Listbox(exportselection=0) 
for item in styles: 
    b3.insert(END, item) 

TK विजेट के लिए निश्चित प्रलेखन बल्कि अजगर से Tcl भाषा पर आधारित है, लेकिन यह अजगर को अनुवाद करने के लिए आसान है। exportselection विशेषता standard options manual page पर पाई जा सकती है।

4

exportselection=0 जब कोई सूची बॉक्स परिभाषित करता है तो इस समस्या का ख्याल रखना प्रतीत होता है।

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