Feb-15-2020, 04:51 PM
Hi I am using Tkinter and creating Labels ad Combobox Dynamically based on a query result.
While running the query again, i need to delete the widget i created. but i am getting Name error.
Attaching the code kindly help please,
While running the query again, i need to delete the widget i created. but i am getting Name error.
Attaching the code kindly help please,
def ColumnName(event): for label in Column_Label: # print(label) exec(label+'.grid_remove()') # exec(combobox+'.grid_remove()') try: no_of_record_label.grid_remove() no_of_record.grid_remove() button_run.grid_remove() except: print("error") server=server_text.get() Database=Db_Name.get() connStr = ( r"DRIVER={SQL Server Native Client 11.0};" r"SERVER="+server+";" r"Database="+Database+";" r"Integrated Security=true;Trusted_Connection=yes;") tablename=table_Name.get() cnxn = pyodbc.connect(connStr, autocommit=True) query=("""select COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'"""+tablename+"'" ) print(query) crsr = cnxn.execute(query) row_num=2 column_num=0 Variable_Number=1 # Db_Name=ttk.Combobox(frame) # for i in range(1,variable_Number) # exec('global Mask_Category1') for row in crsr.fetchall(): Column_Names.append(str(row[0])) print(type(row[0])) exec('global Mask_Category'+str(Variable_Number)) Mask_Combobox.append('Mask_Category'+str(Variable_Number)) Column_Label.append('Column_Label'+str(Variable_Number)) test='Column_Label'+str(Variable_Number)+' = tk.Label(frame,text="'+row[0]+'")' test1='Column_Label'+str(Variable_Number)+'.grid(row='+str(row_num)+',column='+str(column_num)+')' exec(test+';'+test1) test='Mask_Category'+str(Variable_Number)+'=ttk.Combobox(frame)' test1='Mask_Category'+str(Variable_Number)+'.grid(row='+str(row_num)+',column=2)' print(test) exec(test+';'+test1) # Db_Name.config(values=list1) options=['Name','SSN'] exec('Mask_Category'+str(Variable_Number)+'.config(values=options)') # test eval(test1) row_num+=1 Variable_Number+=1 print(Column_Names) no_of_record_label=tk.Label(frame,text="No of Records") no_of_record=tk.Entry(frame) no_of_record_label.grid(row=row_num,column=1) no_of_record.grid(row=row_num,column=2) row_num+=1 print(Mask_Combobox) print(Column_Label) button_run=tk.Button(frame,text="Create Data",command=Final) button_run.grid(row=row_num,column=1,columnspan=2) # root1.mainloop() root.update_idletasks() import tkinter as tk from tkinter import ttk import pyodbc root=tk.Tk() frame=tk.Frame(root) frame.pack() Column_Names=[] Mask_Combobox=[] Column_Label=[] server_label=tk.Label(frame,text="Server Name") server_text=tk.Entry(frame) Db_Name=ttk.Combobox(frame) button=tk.Button(frame,text="Get DB Name",command=DBName) server_label.grid(row=0,column=0) server_text.grid(row=0,column=1) Db_Name.grid(row=0,column=2) button.grid(row=0,column=3) Db_Name.bind("<<ComboboxSelected>>", TableName) root.mainloop()