Как удалить Python -Tkinter def LabelFrame? - PullRequest
0 голосов
/ 14 апреля 2020

Я использую кнопки для вызова переменных def, которые создают метки. Я переключаюсь между кнопками, такими как вкладки, и хочу, чтобы мои новые кадры отображались внизу соответственно, но старый меточный кадр остался позади и не определен как вызываемый для стирания.

Вот пример того, как я формулирую код.

from tkinter import *
root = Tk()
root.state('zoomed')

def A1():
    lf=LabelFrame(root,text='new frame')
    lf.pack()
    d=Button(lf, text='Added', width=0, borderwidth=3)
    d.pack()

a = Button(root, text="add", command=A1)
a.pack()
b=Button(root,text="Delete me",command=lambda:b.pack_forget())
b.pack()
c=Button(root,text="Delete Added",command=lambda:lf.pack_forget())
c.pack()

root.mainloop()

Спасибо за ваше время и советы.

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете:

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

Например:

from tkinter import *
root = Tk()
root.state('zoomed')

# Added a function to delete the frame and reset the button's command
def remove_frame(lf):
    lf.pack_forget()
    c.config(command=None)

def A1():
    lf=LabelFrame(root,text='new frame')
    lf.pack()
    d=Button(lf, text='Added', width=0, borderwidth=3)
    d.pack()

    # Sets the remove_frame function to the button's command.
    # Since lf is created locally it will need to be passed to the remove_frame function.
    c.config(command=lambda: remove_frame(lf))

a = Button(root, text="add", command=A1)
a.pack()
b=Button(root,text="Delete me",command=lambda:b.pack_forget())
b.pack()
c=Button(root,text="Delete Added") # Create the button with no command.
c.pack()

root.mainloop()

В настоящее время это позволит вам Добавьте несколько фреймов, но удалите только один.

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

Если вы хотите удалите их последовательно или все, добавив кадры к list и используя pack_forget для каждого элемента в списке, - это один из способов достижения этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...