как создать несколько кнопок с помощью al oop? - PullRequest
0 голосов
/ 03 августа 2020
• 1000 1005 *

Я хотел бы отобразить 3 файла с 3 различными настройками.

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()

Мне удалось отобразить текст, но не кнопку и изображение, переменная перезаписана. Как решить эту проблему?

1 Ответ

1 голос
/ 03 августа 2020

Проблема, с которой вы столкнулись, заключается в том, как вы сказали, переменная перезаписана в вашем l oop. Чтобы решить эту проблему, вам необходимо отслеживать созданные вами изображения. Простое решение - сохранить их в списке и получить на следующем шаге. Вот пример:

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()
...