Как при выборе значений 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()
→ Ссылка