2014-01-16 4 views
0

Чтобы удалить кнопку при использовании tkinter, я знаю, что я должен использовать grid_remove. Где должна быть размещена команда, и какой бы код линии, который его удалял, выглядел? Здесь я создал кнопку.Где поместить код для удаления виджета tkinter из окна

self.button1 = Tkinter.Button(self, text=u"Convert Decimal to Binary", command=lambda: self.OnButtonClick(1)) 
self.button1.grid(column=1,row=1) 

Тогда вот функция, которую я создал, чтобы определить, какая кнопка была нажата, так как у меня есть другой чуть ниже этого.

def OnButtonClick(self, button_id): 
    if button_id == 1: 
     self.entryVariable = Tkinter.StringVar() 
     self.entry = Tkinter.Entry(self,textvariable=self.entryVariable) 
     self.entry.grid(column=1,row=0,sticky='EW') 
     self.entryVariable.set(u"Enter Decimal Number Here") 

Где бы я поместить grid_remove избавиться от кнопки, и что бы строка кода, которая удаляет его выглядеть? Я бы предположил, что-то вроде этого:

self.button1 = Tkinter.Button(self, text=u"Convert Decimal to Binary", command=lambda: self.grid_remove(1)) 

Но я не очень уверен, что

+0

grid_remove только удаляет виджет из поля зрения, он не удаляет виджет. Это то, что вы хотите, или хотите удалить объект виджета? –

+0

Я хочу на самом деле удалить виджет, но похоже, что это делает работу. Моя проблема теперь заключается в том, как удалить (из представления) ярлык. – Dan

+0

Если вы хотите удалить виджет, вызовите '.destroy()' в виджетах. Вызывая «grid_remove», вы просто удаляете его из представления. Это все еще в памяти. Для крошечной программы это не очень важно, но вы не хотите начинать разрабатывать вредные привычки, когда только начинаете. –

ответ

1

Вы бы вызвать метод grid_remove из self.button1 так:

self.button1.grid_remove() 

Ниже приведен пример сценария, чтобы продемонстрировать:

from Tkinter import Tk, Button 
root = Tk() 
def click(): 
    button.grid_remove() 
button = Button(text="click", command=click) 
button.grid() 
root.mainloop() 

Что касается места размещения этой линии, тебе. Это может быть внутри OnButtonClick, внутри другого метода и т. Д. В принципе, положите его, где хотите, self.button1 удален.

Я предполагаю, что внутри OnButtonClick, в этом случае код будет выглядеть примерно так:

def OnButtonClick(self, button_id): 
    if button_id == 1: 
     self.entryVariable = Tkinter.StringVar() 
     self.entry = Tkinter.Entry(self,textvariable=self.entryVariable) 
     self.entry.grid(column=1,row=0,sticky='EW') 
     self.entryVariable.set(u"Enter Decimal Number Here") 

     self.button1.grid_remove() # Remove the button 
+0

Есть ли способ общаться? У меня есть еще несколько вопросов, и это было бы проще, чем публикация каждого из них, если вы не возражаете, конечно. – Dan

+0

@ Dan - Это не то, что я не помню ... Я на самом деле никогда не использовал систему чата здесь, на SO , Итак, я не знаком с тем, как он работает. Тем не менее, я дам вам очень полезную ссылку для Tkinter: http://www.tkdocs.com/tutorial/onepage.html На большинство ваших вопросов, вероятно, можно ответить на информацию. – iCodez

Смежные вопросы