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()
