Button with Image Icon - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: Button with Image Icon (/thread-20018.html) |
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) self.label.pack(side=RIGHT) self.root.mainloop() def updatebanane(self): self.label.config(text='Banane') def updatemelone(self): self.label.config(text='Melone') 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 self.label.config(text='Banane') if event.widget = self.b2 self.label.config(text='Melone')But i get the following error
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 Button(self.root,image=self.banane,width="30",height="30", command=partial(self.update, "b1")).pack(side=LEFT) Button(self.root,image=self.melone,width="30",height="30", command=partial(self.update, "b2")).pack(side=LEFT) def update(self, button_num): if button_num=="b1": self.label.config(text='Banane') elif button_num=="b2": self.label.config(text='Melone') 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 |