python - 将 python 字符串从列表打印到 gui

标签 python user-interface tkinter

我有一个列表,例如:

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/

相关文章:

python - 使用 pySerial 包的完整示例

python - 如何在 python 注释中指定输入和输出数据类型?

java - J 标签和 J 复选框

jquery - 如何将自定义类添加到我的 JQuery UI Datepicker

python - 工作线程完成后从主线程更新 Tkinter 小部件

python - 如何使用 tkinter 提示用户将 DataFrame 保存到 Excel 文件?

python - python 中 savefig 中的关键事件。怎么做?

python - 在没有try-except block 的情况下在python程序范围内处理异常

python - 如何使用 Python 与窗口的 GUI 交互?

python - 如果在python tkinter中输入为空,如何将输入值设置为零?