2011-06-07 5 views
5

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

from Tkinter import * 

root = Tk() 
frame = Frame(root) 

#callbacks 
def enableEntry(): 
    entry.configure(state=ENABLED) 
    entry.update() 

def disableEntry(): 
    entry.configure(state=DISABLED) 
    entry.update() 

#GUI widgets 
entry = Entry(frame, width=80) 
entry.pack(side='right') 

var = StringVar() 
disableEntryRadioButton = Radiobutton(frame, text="Disable", variable=var, value="0", command=disableEntry) 
disableEntryRadioButton.pack(anchor=W) 
enableEntryRadioButton = Radiobutton(frame, text="Enable", variable=var, value="1", command=enableEntry) 
enableEntryRadioButton.pack(anchor=W) 

मेरा विचार है जब प्रत्येक रेडियो बटन दबाया जाता है उचित कॉलबैक आह्वान करने के लिए है:

यहाँ मेरी कोड है। लेकिन मुझे पूरा यकीन नहीं है कि यह वास्तव में मेरे द्वारा लिखे गए कोड के साथ होता है, क्योंकि जब मैं रेडियो का चयन करता हूं तो प्रविष्टि की स्थिति स्विच नहीं होती है।

मैं इसके साथ गलत कहां हूं?

उत्तर

5

आपके पास अपने प्रोग्राम के साथ कुछ चीजें गलत हैं, लेकिन सामान्य संरचना ठीक है।

  1. आप root.mainloop() पर कॉल नहीं कर रहे हैं। इवेंट लूप के लिए बटन क्लिक आदि जैसी घटनाओं के लिए जरूरी है।
  2. आप ENABLED और DISABLED का उपयोग करते हैं लेकिन कहीं भी उन्हें परिभाषित या आयात नहीं करते हैं। व्यक्तिगत रूप से मैं स्ट्रिंग मान "normal" और "disabled" का उपयोग करना पसंद करता हूं।
  3. आप पैकिंग नहीं कर रहे हैं अपने मुख्य frame विजेट

जब मैं उन तीन बातें अपने कोड ठीक काम करता है ठीक। यहाँ काम कर कोड है:

from Tkinter import * 

root = Tk() 
frame = Frame(root) 
frame.pack() 

#callbacks 
def enableEntry(): 
    entry.configure(state="normal") 
    entry.update() 

def disableEntry(): 
    entry.configure(state="disabled") 
    entry.update() 

#GUI widgets 
entry = Entry(frame, width=80) 
entry.pack(side='right') 

var = StringVar() 
disableEntryRadioButton = Radiobutton(frame, text="Disable", variable=var, value="0", command=disableEntry) 
disableEntryRadioButton.pack(anchor=W) 
enableEntryRadioButton = Radiobutton(frame, text="Enable", variable=var, value="1", command=enableEntry) 
enableEntryRadioButton.pack(anchor=W) 

root.mainloop() 
+0

ब्रायन, माफी माँगता हूँ: मैं अपने कोड अंश (टाइपो) – csparpa

+0

ठीक है, कोड अब ठीक काम करता है में 'root.mainloop()' डालने के लिए भूल गया था। धन्यवाद! – csparpa

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