Изображения не применяются к кнопке в Tkinter - PullRequest
0 голосов
/ 01 августа 2020

Следующий проект должен отображать сообщение при нажатии определенной цветной кнопки. Но всякий раз, когда я запускаю программу, она показывает пустые (белые) кнопки с правильным выравниванием, et c. По какой-то причине изображения не загружаются. В будущем я планирую добавить разные изображения, поэтому буду тестировать цветные изображения, созданные в Paint, а не встроенные команды для отображения цвета. Я добавлю результат ниже после кода.

Edit: все изображения размером 100x100 пикселей, созданные в Microsoft Paint. Я пробовал другие модули, такие как PIL, но безрезультатно.

# importing the module
import tkinter
import tkinter.messagebox
from tkinter import *
# importing the module

# initialising tkinter
class window(Frame):

    def __init__(self,master = None):
        Frame.__init__(self,master)
        self.master = master
# initialising tkinter

# creating the window
root = Tk()
app = window(root)
root.geometry("350x350")
# creating the window

# colours
WHITE = (255,255,255)
BLACK = (0,0,0)
BLUE  = (0,0,255)
RED   = (255,0,0)
# colours

# image


red_image = "red.png"
blue_image = "blue.png"
yellow_image = "yellow.png"
green_image = "green.png"

# image

# creating a button function
def create_button(x,y,color,color2,picture):
    click = Button(root, image = PhotoImage(picture), width= 150, height=150, command = lambda : tkinter.messagebox.showinfo( "Hello Python", "This is " + color))
    click.image = PhotoImage(picture)
    click.grid( row = x, column = y)
# creating a button function

create_button(0,0,'red','pink',red_image)
create_button(0,2,'blue','lightblue',blue_image)
create_button(2,0,'green','lightgreen',green_image)
create_button(2,2,'yellow','lightyellow',yellow_image)

# starting the widget
root.mainloop()
# starting the widget

Directory

Результат

Ответы [ 2 ]

2 голосов
/ 01 августа 2020

В вашем коде есть две проблемы:

  • Вы передали имя файла в PhotoImage() без использования ключевого слова file: PhotoImage(picture) должно быть PhotoImage(file=picture)

  • Вы сохранили не ссылку на изображение, назначенное кнопке, а другой экземпляр изображения

Ниже представлена ​​обновленная функция create_button(), которая устраняет проблемы:

def create_button(x, y, color, color2, picture):
    image = PhotoImage(file=picture)
    click = Button(root, image=image, width=150, height=150, command=lambda: tkinter.messagebox.showinfo("Hello Python", "This is "+color))
    click.image = image
    click.grid(row=x, column=y)
1 голос
/ 01 августа 2020

Для добавления изображения в Button у вас нет подходящих ключевых слов.

Вот простой пример добавления изображения в кнопку

from tkinter import * 
from tkinter.ttk import *
# creating tkinter window 
root = Tk() 
# Adding widgets to the root window 
Label(root, text = 'Image adding', font =( 'Verdana',15)).pack(side = TOP, pady = 10) 

  # Creating a photoimage object to use image 

photo = PhotoImage(file = "C:\Gfg\circle.png") 
# here, image option is used to 
# set image on button 

Button(root, text = 'Click Me !', image = photo).pack(side = TOP) 
root.mainloop() 

Думаю, это может вам помочь

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