Sie haben die Liste erstellen Tasten zu halten und dann können Sie verwenden grid()
und grid_forget()
import tkinter as tk
# --- functions ---
def toggle_text():
global buttons # inform function to use external/global variable
if btn['text'] == 'Show':
btn['text'] = 'Hide'
for i, item in enumerate(some_list, 6):
# don't use name `btn` because you overwrite external `btn`
b = tk.Button(root, text=item)
b.grid(row=i, column=0, sticky='we')
buttons.append(b)
else:
btn['text'] = 'Show'
for b in buttons:
#b.grid_forget()
# better `destroy` because you will create new buttons
# so you can free memory
b.destroy()
# remove all buttons from list
#buttons.clear() # only Python 3 (doesn't need `global buttons`)
#buttons[:] = [] # Python 2 and 3 (doesn't need `global buttons`)
buttons = [] # Python 2 and 3 but needs `global buttons`
# --- main ---
some_list = ['A', 'B', 'C']
buttons = [] # create global variable
root = tk.Tk()
btn = tk.Button(root, text='Show', command=toggle_text)
btn.grid(row=5, column=0, sticky='w')
root.mainloop()
Wenn Sie immer die gleichen Tasten, dann können Sie sie einmal erstellen.
import tkinter as tk
# --- functions ---
def toggle_text():
if btn['text'] == 'Show':
btn['text'] = 'Hide'
for i, b in enumerate(buttons, 6):
b.grid(row=i, column=0, sticky='we')
else:
btn['text'] = 'Show'
for b in buttons:
b.grid_forget()
# --- main ---
root = tk.Tk()
some_list = ['A', 'B', 'C']
buttons = [] # create global variable
for item in some_list:
b = tk.Button(root, text=item)
buttons.append(b)
btn = tk.Button(root, text='Show', command=toggle_text)
btn.grid(row=5, column=0, sticky='w')
root.mainloop()
Oder Sie Frame
zur Gruppe Buttons
import tkinter as tk
# --- functions ---
def toggle_text():
if btn['text'] == 'Show':
btn['text'] = 'Hide'
frame.grid(row=6, column=0, sticky='we')
else:
btn['text'] = 'Show'
frame.grid_forget()
# --- main ---
root = tk.Tk()
some_list = ['A', 'B', 'C']
frame = tk.Frame(root)
frame.columnconfigure(0, weight=1) # resise column
for i, item in enumerate(some_list):
b = tk.Button(frame, text=item)
b.grid(row=i, column=0, sticky='we')
btn = tk.Button(root, text='Show', command=toggle_text)
btn.grid(row=5, column=0, sticky='w')
root.mainloop()
Verwendung Liste können alle angelegten Tasten halten und dann können Sie Schaltflächen aus der Liste, um sie zu verstecken. Oder erstellen Sie 'Frame' mit Schaltflächen und Sie müssen nur einen Rahmen anzeigen/ausblenden. – furas