Я хочу создать несколько ярлыков один под другим при нажатии кнопки (Создать), а затем удалить все ярлыки в одном экземпляре при другом нажатии кнопки (Удалить).
Сейчас я думаю о создании несколько имен для ярлыков - каждое имя создается одним щелчком мыши. Итак, если я нажму кнопку n раз, я получу n имен: myLabel1, myLabel2, ..., myLabeln
Затем, когда я нажму кнопку Удалить, у меня будет что-то вроде - myLabel1.destroy (), myLabel2 .destroy (),. . . myLabeln.destroy ()
Я борюсь с присвоением этих имен меткам в форме - myLabel1 = tk.Label, et c. Я думаю о функции eval в MATLAB. Есть ли что-нибудь подобное для Python?
Есть ли лучший способ делать то, что я хочу делать?
Если я использую метод .pack (), я получаю свои ярлыки один под другим. Но все они присвоены только myLabel (поскольку я использую myLabel = tk.Label). И когда я использую myLabel.destroy (), удаляется только последний экземпляр метки.
Код с .pack () и однократное использование myLabel, где метки формируются по мере необходимости, но удаляется только последний. :
import tkinter as tk
from tkinter import ttk
import tkinter.font as tkFont
root = tk.Tk()
def click():
global myLabel
myLabel = tk.Label(root, text = e.get())
myLabel.pack(pady=10)
e.delete(0,'end')
def delete():
myLabel.destroy()
e = tk.Entry(root, width = 50)
e.pack(padx = 10, pady = 10)
CreateButton = tk.Button(root, text = 'Enter name', command = click)
CreateButton.pack(pady=10)
DeleteButton = tk.Button(root, text = 'Delete', command = delete)
DeleteButton.pack(pady=40)
root.mainloop()
Но поскольку при этом удаляется только последняя созданная метка, я попробовал метод, упомянутый в начале -
import tkinter as tk
from tkinter import ttk
import tkinter.font as tkFont
ii = 0
root = tk.Tk()
def click():
global labelname, ii
ii += 1
labelname = 'myLabel' + str(ii)
print(labelname)
labelname = tk.Label(root, text = e.get()) # I wanted 'labelname' here to be 'myLabel1'
e.delete(0,'end')
def delete():
# for ii in range(1,max(ii)):
labelname.config(text = '') # I wanted 'labelname' here to be 'myLabeln' in a for loop going from 1 to n
e = tk.Entry(root, width = 50)
e.pack(padx = 10, pady = 10)
CreateButton = tk.Button(root, text = 'Enter name', command = click)
CreateButton.pack(pady=10)
DeleteButton = tk.Button(root, text = 'Delete', command = delete)
DeleteButton.pack(pady=40)
root.mainloop()
Возможно, я собираюсь об этом очень запутанно. путь и есть более простой способ без использования For l oop, et c.
Пожалуйста, посоветуйте.
Спасибо
R