问题描述
我试图在每次在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 (将#修改为@)