Как при выборе значений Combobox в tkinter оставлять в окне программы только нужные виджеты?
Уже 2 дня борюсь с тем, чтобы при выборе значения из combobox в окне Frame
оставались только нужные Label
и Entry
.
Например, по выборе 1
в окне появлялся Label1
и Entry1
и тд.
Напишите пожалуйста лёгкий пример! Как убирать лишним строки при выборе 1 после 2.
From tkinter import ttk
From tkinter import *
From tkinter import *
def sel(event):
if com.current(0) == 0:
name1 = Label(win, text="1").grid(row=0, column=1)
Vvod1 = Entry(win).grid(row=0, column=2)
else:
name1 = Label(win, text="1").grid(row=0, column=1)
Vvod1 = Entry(win).grid(row=0, column=2)
name2 = Label(win, text="2").grid(row=1, column=1)
Vvod2 = Entry(win).grid(row=1, column=2)
win = Tk()
vid = ["1","2"]
com = ttk.Combobox(win, values=vid, state="readonly")
com.grid(row=0, column=0)
com.bind("<ComboboxSelected>",sel
win.mainloop()
Ответы (1 шт):
Автор решения: Donovan
→ Ссылка
Самый простой способ: создать Frame
и добавить в него нужны виджеты, в нужное время удаляя с помощью метода grid_forget()
Пример:
import tkinter as tk
def sel(event):
value = com.get() # Получение значения Combobox
F1 = tk.Frame(win)
F2 = tk.Frame(win)
if value == "1": # Значение = 1
# Вывод Label 1 | Entry 1
L1 = tk.Label(F1, text="Label_1: ")
E1 = tk.Entry(F1)
F1.grid(row=0, column=1)
L1.grid(row=0, column=1)
E1.grid(row=0, column=2)
# Удаление Label 2 | Entry 2
F2.grid_forget()
elif value == "2": # Значение = 2
# Вывод Label 2 | Entry 2
L2 = tk.Label(F2, text="Label_2: ")
E2 = tk.Entry(F2)
F2.grid(row=0, column=1)
L2.grid(row=0, column=1)
E2.grid(row=0, column=2)
# Удаление Label 1 | Entry 1
F1.grid_forget()
win = tk.Tk()
vid = ["1","2"]
com = ttk.Combobox(win, values=vid, state="readonly")
com.grid(row=0, column=0)
com.bind('<<ComboboxSelected>>', sel)
win.mainloop()