我有一个列表,例如:
list = ['one', 'two', 'three', 'four']
列表中的项目每 10 分钟就会更改一次(请记住这一点)。
我需要一个带有背景图像的图形用户界面,我可以在其中打印列表中的每个项目。我可以这样做
for item in list:
print item
我用 tkinter 尝试过,但 mainloop() 遇到了一些问题。当我这样做时
for item in list:
root = Tk()
canvas = Canvas(width = 300, height = 200, bg = 'yellow')
canvas.pack(expand = YES, fill = BOTH)
gif1 = PhotoImage(file = 'myImage.gif')
canvas.create_image(0, 0, image = gif1, anchor = NW)
# print item from my list
w = Label(root, text=item)
w.pack()
root.mainloop()
显示了带有图像的 tkinter gui,但仅带有文本“one”(我的列表中的第一项)。当我关闭图形用户界面时,会弹出另一个窗口,其中显示“二”,当我关闭该窗口时,会弹出“三”......并且至少“四”。 这是合乎逻辑的,因为我一直处于 for 循环中,并且为列表中的每个项目生成了一个 gui。
我的问题:如何更新 GUI?我的列表中的项目每 10 分钟就会更改一次。我需要遍历我的列表并在一个 GUI 窗口中打印所有项目。 10 分钟后,我想再次遍历我的列表并再次更新 GUI。
我怎样才能做到这一点?
最佳答案
您将获得 4 个窗口,因为您正在定义 mainloop 以及 for 循环中的所有其余部分。作为替代尝试:
root = Tk()
canvas = Canvas(width = 300, height = 200, bg = 'yellow')
canvas.pack(expand = YES, fill = BOTH)
gif1 = PhotoImage(file = 'myImage.gif')
canvas.create_image(0, 0, image=gif1, anchor = NW)
item=" ".join(list)
w = Label(root, text=item)
w.pack()
root.mainloop()
将列表中的所有项目打印为一行。下一步是在列表更改时重绘主窗口。我不是 Tk 专家,所以我无能为力。
尝试this stuff学习如何正确使用 Tk。
关于python - 将 python 字符串从列表打印到 gui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4844032/