如何使用循环生成多个按钮?

2024-09-28 22:12:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了显示“tuile”的软件

tuile的定义:

tuile是一个包含按钮的框架,该按钮显示图像和解释性文本

我想用3种不同的设置显示3个tuiles

listes_icones = ["icone1.png","icone2.png","icone3.png"]
listes_relx = [".3",".4",".5"]
listes_text = ["SYSTEM", "USER", "GAME"]

for i in range(3):

    gen_img = PhotoImage(file=listes_icones[i])
    gen_cadre = Frame(home,width=100, height=100,bg=bg_root)
    gen_cadre.place(anchor="c", relx=listes_relx[i], rely=.5)

    gen_img_bouton = Button(gen_cadre, image=gen_img, relief="flat",bg=bg_root)
    gen_img_bouton.pack()

    gen_text = Label(gen_cadre, text=listes_text[i], bg=bg_root, fg=text_color,font="blocktastic 18")
    gen_text.pack()

我设法显示文本,但不显示按钮和图像,变量被覆盖。如何解决这个问题


Tags: text图像文本imgpngroot按钮gen
1条回答
网友
1楼 · 发布于 2024-09-28 22:12:48

您面临的问题就像您所说的,变量在循环中被覆盖。要解决这个问题,您需要跟踪生成的图像。一个简单的解决方案是将它们存储在一个列表中,并在下一步获取它们。这里有一个例子:

import tkinter as tk
import PIL

listes_icones = ["icone1.png","icone2.png","icone3.png"]
gen_icons = []
listes_relx = [".3",".4",".5"]
listes_text = ["SYSTEM", "USER", "GAME"]

home = tk.Tk()



for i in range(3):
    gen_img = tk.PhotoImage(file=listes_icones[i])
    gen_icons.append(gen_img)
    gen_cadre = tk.Frame(home,width=100, height=100)
    gen_cadre.place(anchor="c", relx=listes_relx[i], rely=.5)

    gen_img_bouton = tk.Button(gen_cadre, image=gen_icons[i], relief="flat")
    gen_img_bouton.pack()

    gen_text = tk.Label(gen_cadre, text=listes_text[i], font="blocktastic 18")
    gen_text.pack()

home.mainloop()

相关问题 更多 >