如何解决我在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 举报,一经查实,本站将立刻删除。