gpt4 book ai didi

Python-Tkinter,用于循环创建图片按钮

转载 作者:行者123 更新时间:2023-11-28 21:59:44 33 4
gpt4 key购买 nike

我对编程还是个新手,所以我的问题可能很简单,甚至很愚蠢。如标题中所述,我正在尝试编写一个 for 循环,它为特定文件夹中的每张图片创建一个图片按钮小部件。这是我目前所拥有的:

import tkinter  
from tkinter import ttk
from tkinter import PhotoImage
import os

root = tkinter.Tk()

list_files = os.listdir(".")

for file in list_files:
if file.endswith(".gif"):
drink = PhotoImage(file)
print(drink)
b1 = ttk.Button(image=drink, text="Hello", compound="right").pack()
l1 = ttk.Label(image=drink).pack()


root.mainloop()

现在我得到了两个小部件,一个什么都不显示的标签和一个显示 Hello 的按钮。在 shell 中它显示 drink1.gif,这是正确的,因为这是我的标准 python 文件夹中唯一的 gif 文件...

我做错了什么?

最佳答案

  1. 使用 PhotoImage(file='path_to_file') 从路径创建图像。
  2. PhotoImage 对象被 Python 垃圾回收时,标签被清除。您必须在某处保存对 drink 对象的引用:l1.image = drink:
    http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm
  3. widget.pack() 方法不返回任何内容。

import tkinter  
from tkinter import ttk
from tkinter import PhotoImage
import os

root = tkinter.Tk()
list_files = os.listdir(".")
for path in list_files:
if path.endswith(".gif"):
drink = PhotoImage(file=path)
b1 = ttk.Button(root, image=drink, text="Hello", compound="right")
b1.pack()
l1 = ttk.Label(root, image=drink)
l1.image = drink
l1.pack()

root.mainloop()

关于Python-Tkinter,用于循环创建图片按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16132336/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com