Tkinter:基于单选按钮替换图像

时间:2020-09-27 18:14:19

标签: python tkinter

我正在尝试创建一个选择框架,用户可以在其中选择要使用的数据库,并根据该选择显示该数据库的徽标。

我的问题来自这样一个事实,即当我第一次选择时,它可以正常工作,但是如果我选择另一个,它会保留第一张图像而不是更改。我已经尝试过使用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

0 个答案:

没有答案
相关问题