Отображение виджетов в tkinter: скрыть и вернуть обратно

389 просмотра
0

Мне нужно завершать функцию и удалять объекты button и Label после начала выполнения другой функции.Вот эта функция:

def child():
     btn = Button(root, text="Подтвердить",  background="#708090",padx="20", pady="8",
                 font="16")
     o = Entry(root)
     def sum_back():
       if int(o.get()) <= s:
           ost=s-o
 
     text = Label(root, text="Сумма к оплате: %s" % (s))
     text1 = Label(root, text= "Вы оплачиваете : %s" % (o))
     text2 = Label(root, text = "Осталось оплатить: %s" %(ost))
 
     text.pack()
     text1.pack()
     o.pack()
 
     text2.pack()
 
     btn.pack()
     root.grab_set()
     root.focus_set()

Далее идет другая функция. Так вот , мне нужно, что бы после нажатия на n ную кнопку функция «скрывала» кнопки и лейблы. А после повторного вызывания функции снова «возвращала».


Добавить комментарий

1 Ответы

Python Опубликовано 12.12.2018
0

Можно при помощи компоновщика .grid() добавлять объект и временно удалять при помощи .grid_remove()
Пример:

import tkinter
 
 
def func():
        label_visible_false.grid()
        button_visible_false.grid()
        label_visible_true.grid_remove()
        button_visible_true.grid_remove()
 
 
def visible_true():
        label_visible_false.grid_remove()
        button_visible_false.grid_remove()
        label_visible_true.grid()
        button_visible_true.grid()
 
 
root = tkinter.Tk()
root.geometry("400x400")
label_visible_true = tkinter.Label(root, text='Не скрытый текст')
label_visible_true.grid()
 
button_visible_true = tkinter.Button(root, text='Не скрытая кнопка', command=func)
button_visible_true.grid()
 
label_visible_false = tkinter.Label(root, text='Скрытый текст')
 
button_visible_false = tkinter.Button(root, text='Скрытая кнопка', command=visible_true)
 
root.mainloop()


Так же это можно сделать с pack() при помощи функции pack_forget()
Пример c pack():

import tkinter
 
 
def func():
        label_visible_false.pack()
        button_visible_false.pack()
        label_visible_true.pack_forget()
        button_visible_true.pack_forget()
 
 
def visible_true():
        label_visible_false.pack_forget()
        button_visible_false.pack_forget()
        label_visible_true.pack()
        button_visible_true.pack()
 
 
root = tkinter.Tk()
root.geometry("400x400")
label_visible_true = tkinter.Label(root, text='Не скрытый текст')
label_visible_true.pack()
 
button_visible_true = tkinter.Button(root, text='Не скрытая кнопка', command=func)
button_visible_true.pack()
 
label_visible_false = tkinter.Label(root, text='Скрытый текст')
 
button_visible_false = tkinter.Button(root, text='Скрытая кнопка', command=visible_true)
 
root.mainloop()


Так же можно и с place() при помощи того же place_forget()

import tkinter
 
 
def func():
        label_visible_false.place(x=0, y=50)
        button_visible_false.place(x=0, y=100)
        label_visible_true.place_forget()
        button_visible_true.place_forget()
 
 
def visible_true():
        label_visible_false.place_forget()
        button_visible_false.place_forget()
        label_visible_true.place(x=0, y=50)
        button_visible_true.place(x=0, y=100)
 
 
root = tkinter.Tk()
root.geometry("400x400")
label_visible_true = tkinter.Label(root, text='Не скрытый текст')
label_visible_true.place(x=0, y=50)
 
button_visible_true = tkinter.Button(root, text='Не скрытая кнопка', command=func)
button_visible_true.place(x=0, y=100)
 
label_visible_false = tkinter.Label(root, text='Скрытый текст')
 
button_visible_false = tkinter.Button(root, text='Скрытая кнопка', command=visible_true)
 
root.mainloop()

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up