Как я могу поместить изображение на кнопку в Python Tkinter? - PullRequest
0 голосов
/ 07 июня 2019

Это мой код в Tkinter. Я пытался показать кнопки с изображением при выборе размера сетки в интерфейсе tkinter. Моя проблема в том, что когда я иду, чтобы поместить изображение внутри кнопки, оно не отображается. В списке grid2 уже есть изображения с использованием метода shuffle. Любая помощь приветствуется.

import tkinter
import tkinter.ttk
import random
def startButton():
    global my_list, roundNum, tmp_list, startTime
    grid_size = combobox1.get()[0]
    roundNum = combobox2.get()[0]
    gridActorList(my_list)
    imageUpdate()
    startTime=time.time()
def imageUpdate():
    global grid_size
    t = []
    if grid_size == 2:
        photo_1 = tkinter.PhotoImage(file="picture/"+grid2[0]+".png")
        photo_2 = tkinter.PhotoImage(file="picture/"+grid2[1]+".png")
        photo_3 = tkinter.PhotoImage(file="picture/"+grid2[2]+".png")
        photo_4 = tkinter.PhotoImage(file="picture/"+grid2[3]+".png")
        for k in range(1,5):
            t.append(tkinter.Button(window, image=photo_+str(k)))
        for i in range(0,4):
            t[i].pack()
window = tkinter.Tk()
window.title('Finding different picture!')
window.geometry('500x400')
#combobox 
values1=[str(i)+"x"+str(i) for i in range(2,6)] #grid size
values2=[str(j)+"times" for j in range(1,10,2)] #play time size
combobox1=tkinter.ttk.Combobox(window, height=5, width=15, values=values1,
                               justify='center', takefocus=True )
combobox2=tkinter.ttk.Combobox(window, height=5, width=15, values=values2,
                               justify='center', takefocus=True )
combobox1.set("select size")
combobox2.set("select times")
combobox1.place(x=15, y=15)
combobox2.place(x=155, y=15)
#startButton
startBtn = tkinter.Button(window, text='start', command=startButton)
startBtn.place(x=300, y=15)
#variables
my_list = []
roundNnum = 0
window.mainloop()

Я пытался свернуть код. Если потребуется больше кодов, я его отредактирую.

1 Ответ

0 голосов
/ 07 июня 2019

Ваш код не запускается. Это затрудняет отладку. Но я вижу, что вы не сохраняете ссылки на изображения, которые вы помещаете в кнопки.

Поскольку изображения создаются внутри функции, они будут собираться мусором при выходе из функции. Исправьте это, сохранив ссылку на изображение с виджетом кнопки. Изучите пример ниже:

import tkinter as tk

def create_button():
    photo = tk.PhotoImage(file="images/gilliam.png")
    image_button = tk.Button(window, image=photo)
    image_button.image = photo  # Save a reference to the image
    image_button.pack()

window = tk.Tk()

create_button()

window.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...