我正在尝试创建一个选择框架,用户可以在其中选择要使用的数据库,并根据该选择显示该数据库的徽标。
我的问题来自这样一个事实,即当我第一次选择时,它可以正常工作,但是如果我选择另一个,它会保留第一张图像而不是更改。我已经尝试过使用pack_forget()
和delete()
,但是它似乎不起作用。我应该怎么做才能使其正常工作?
db_var = tk.StringVar(settings_window,"0")
n = 0
databases = {"Sql Server" : "Sql Server",
"Sqlite 3" : "Sqlite 3",
"MySQL" : "MySQL"}
def db_logo():
global label_db_image
label_db_image = tk.Label(settings_right_frame,bg=col_rf)
logo_mssql = ImageTk.PhotoImage(Image.open(r"*****SqlServer.png").resize((250,250),Image.ANTIALIAS))
label_mssql = tk.Label(settings_right_frame, image = logo_mssql,bg=col_rf)
logo_sqlite = ImageTk.PhotoImage(Image.open(r"*****Sqlite3.png").resize((250,250),Image.ANTIALIAS))
label_sqlite = tk.Label(settings_right_frame, image = logo_sqlite,bg=col_rf)
logo_mysql = ImageTk.PhotoImage(Image.open(r"*****MySQL.png").resize((250,250),Image.ANTIALIAS))
label_mysql = tk.Label(settings_right_frame, image = logo_mysql,bg=col_rf)
if db_var.get() == "Sql Server":
label_db_image.destroy()
label_db_image = label_mssql
label_db_image.image = logo_mssql
label_db_image.config(image=logo_mssql)
label_db_image.pack(pady=70)
elif db_var.get() == "Sqlite 3":
label_db_image.destroy()
label_db_image = label_sqlite
label_db_image.image = logo_sqlite
label_db_image.config(image=logo_sqlite)
label_db_image.pack(pady=70)
elif db_var.get() == "MySQL":
label_db_image.destroy()
label_db_image = label_mysql
label_db_image.image = logo_mysql
label_db_image.config(image=logo_mysql)
label_db_image.pack(pady=70)
label_select_db= tk.Label(settings_top_frame,text="Please select your database software:",bg=col_tf).grid(pady=10,sticky="nw")
label_db_image = tk.Label(settings_right_frame,bg=col_rf)
for (text,value) in databases.items():
radio=tk.Radiobutton(settings_top_frame,text=text,value=value,variable = db_var, command=db_logo, bg=col_tf).grid(row=2,column=n,rowspan=2,padx=50)
n += 1