我在tkinter中的顶层窗口不再被破坏在我尝试更改功能的其他方面之前,一切正常

问题描述

我试图在每次在tkinter中按下按钮时弹出一个窗口以显示随机文本和图片。我的原始代码将使用if / elif语句执行此操作。它按预期工作,但我认为将数据配对到字典中可能会更容易,因为否则会有50条elif语句(使用那么多语句是否会皱眉?我实际上发现它更易于阅读)。能够做到这一点,但现在tkinter中的顶级窗口并未像原始函数中那样被破坏。仅在其顶部创建了一个新的Label,但我不知道为什么。功能代码如下。在此先感谢您的帮助!

def Add_gemstone2():
    global Addstone

    #destroy the prevIoUs window if there is one.
    try:
        AddStone.destroy()
    except(AttributeError,NameError):
        pass
    #create the window.
    AddStone=Toplevel()
    AddStone.configure(bg='White',height=200,width=325)
    AddStone.geometry('325x180+10+100')

    # add gemstones to list from file.
    gem_stones = open('gemstones.txt')
    all_gem_stones = gem_stones.readlines()
    gemstones = []
    for i in all_gem_stones:
        gemstones.append(i.rstrip())
    # Add pictures to list.
    path = r'C:\Users\Slack\Desktop\PYTHON WORKS\PYTHON GUI PROJECT\gems'
    gempictures = []
    # r=root,d=directories,f = files
    for r,d,f in os.walk(path):
        for file in f:
            if '.gif' in file:
                gempictures.append(os.path.join(r,file))
    #create dictionary from lists.
    gemdiction = dict(zip(gemstones,gempictures))
    key,val = random.choice(list(gemdiction.items()))
    # create the labels.
    glbl1 = Label(AddStone,text=key,bg='gold',wraplength=300)
    glbl1.pack()
    image = ImageTk.PhotoImage(Image.open(val))
    glbl2 = Label(AddStone,image=image)
    glbl2.image = image
    glbl2.pack()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...