2016-01-20 5 views
0

Есть ли способ удалить пользовательский ввод в виджет элемента, когда он отключен и снова включен? Вход пользователя остается как есть, я бы хотел, чтобы он не добавлял событие кнопки.Как удалить текст ввода при отключении и повторном включении виджета

from Tkinter import * 

class Interface(): 
    def __init__(self, window): 
     frame = Frame(window) 
     frame.pack() 

     self.hopLabel = Label(frame, text="Number:", anchor=E) 
     self.hopLabel.grid(row=0, column=0, sticky=EW) 

     options = range(0,6) 
     options.append("Other") 

     self.variable = StringVar(frame) 
     self.variable.set(options[0]) 
     self.options = OptionMenu(frame, self.variable, *options, command=self.this) 
     self.options.grid(row=0, column=2, sticky=EW) 

     self.button = Button(frame,text = "Print Value",width=20,command = self.printit(self.variable.get())) 
     self.button.grid(row=1) 

     self.otherEntry = Entry(frame, state=DISABLED) 
     self.otherEntry.grid(row=0, column=1, sticky=EW) 

    def this(self, value): 
     if value == "Other": 
      self.otherEntry.config(state=NORMAL) 
     else: 
      self.otherEntry.config(state=DISABLED) 

    def printit(self,value): 
     print value 

if __name__ == "__main__": 
    root = Tk() 
    app = Interface(root) 
    root.mainloop() 

В целях экономии места, я не добавить функцию, которая выводит значение «Другой» вариант. Мой вопрос еще раз: есть ли в любом случае, чтобы удалить значение в поле ввода, когда состояние виджета переходит из режима DISALLED в NORMAL без нажатия кнопки?

ответ

0

Чтобы удалить текст в въездном виджете, когда состояние отключено, вам просто нужно установить состояние в нормальном состоянии, а затем вызвать метод delete:

def this(self, value): 
    if value == "Other": 
     self.otherEntry.config(state=NORMAL) 
     self.otherEntry.delete(0, "end") 
    ... 
+0

Спасибо! Я не думал добавлять .delete (0, «end») в нормальное состояние, я попробовал его в состоянии «Отключено». Оно работает! –