1 回答

TA贡献1829条经验 获得超7个赞
我不是 100% 确定您entry1和其他条目的值来自什么。所以我只是建立了一些字典来暂时使用。
我认为您面临的问题之一是将小部件堆叠在最后一组的顶部,这样您就可以轻松构建一次然后更新它们。
我已经重新编写了您的代码,使其成为某种功能,并且对您的 label_maker 进行了一些更改。请注意,您的place()陈述在这里造成了很大的视觉问题。
place()不会影响框架的大小,因此当您仅place()用于框架中的小部件时,框架将始终为零大小。它只是行不通。您需要以某种方式控制帧的大小。
话虽如此,我只是通过更新标签来简化问题。
如果您有任何问题,请告诉我。
我最后使用了 3 种不同颜色的方块,所以我至少可以让你的代码工作。只需切换不同的图像路径即可。
下面的代码将在最后关闭之前每 15 秒更改一次标签。
import tkinter as tk
def manage_time():
global tracker
if tracker == 1:
lbl1.config(image=newImage2)
lbl2.config(text=entry2['title'])
lbl3.config(text=entry2['description'])
tracker = 2
root.after(15000, manage_time)
elif tracker == 2:
lbl1.config(image=newImage3)
lbl2.config(text=entry3['title'])
lbl3.config(text=entry3['description'])
tracker = 3
root.after(15000, manage_time)
else:
root.destroy()
def label_maker(master, x, y, w, h, *args, **kwargs):
label = tk.Label(master, *args, **kwargs)
label.pack(fill="both", expand=1)
return label
root = tk.Tk()
tracker = 1
infoFrame = tk.Frame(root, width=500, height=500)
infoFrame.pack()
""" All the code for your images and entry fields"""
entry1 = {"title":"entry1", "description":"description for entry 1"}
entry2 = {"title":"entry2", "description":"description for entry 2"}
entry3 = {"title":"entry3", "description":"description for entry 3"}
newImage1 = tk.PhotoImage(file="./RGB/blue.gif")
newImage2 = tk.PhotoImage(file="./RGB/red.gif")
newImage3 = tk.PhotoImage(file="./RGB/green.gif")
lbl1 = label_maker(infoFrame, 0, 0, 630, 389, image=newImage1, background='red')
lbl2 = label_maker(infoFrame, 630, 0, 655, 389, text=entry1['title'], background='blue',)
lbl3 = label_maker(infoFrame, 0, 389, 1286, 389, text=entry1['description'], background='green')
root.after(15000, manage_time)
root.mainloop()
添加回答
举报