Python Forum
Button with Image Icon - Printable Version

+- Python Forum (
+-- Forum: Python Coding (
+--- Forum: GUI (
+--- Thread: Button with Image Icon (/Thread-Button-with-Image-Icon)

Button with Image Icon - Friend - Jul-24-2019

Hi again,

i am trying a simple gui, 2 buttons with an image as icon, in this exaple (banane, melone)...
if i press one of the button, the text will be displayed..
it is almost working, however the image icons are tooo big (zoomed out)...what should i do, so that the images fit into the buttons..

class Fruit:
    def __init__(self):
        self.root = Tk()
        self.banane = PhotoImage(file="banane.jpg")
        self.melone = PhotoImage(file="melone.jpg")
        self.b1 = Button(self.root,image=self.banane,width="30",height="30", command=self.updatebanane).pack(side=LEFT)
        self.b2 = Button(self.root,image=self.melone,width="30",height="30", command=self.updatemelone).pack(side=LEFT)
        self.label = Label(self.root, font=('Arial', 14), width=20)


    def updatebanane(self):
    def updatemelone(self):
f = Fruit()
2. Question... is there a way to use events so that i need only one method to update the text instead of 2 ?
i tried the following, it didn't work (i just learned about events yesterday)

self.b1 = Button(self.root,image=self.banane,width="30",height="30", command=self.update).pack(side=LEFT)
self.b2 = Button(self.root,image=self.melone,width="30",height="30", command=self.update).pack(side=LEFT)
    def update(self, event):
        if event.widget = self.b1
        if event.widget = self.b2
But i get the following error
TypeError: update() missing 1 required positional argument: 'event'

RE: Button with Image Icon - woooee - Jul-24-2019

You have not sent any events to the update function. Generally it is done like this, i.e. sending some identifier to the function
from functools import partial
## rest of the code

## pack returns None so self.b1 and self.b2 are None
       command=partial(self.update, "b1")).pack(side=LEFT)
       command=partial(self.update, "b2")).pack(side=LEFT)

    def update(self, button_num):
        if button_num=="b1":
        elif button_num=="b2":

RE: Button with Image Icon - Friend - Jul-25-2019

It works. Thanks a lot
but i never heard of that "partial"...i have to find out more about it