0

I started into a project in Python,Tkinter. I have a button that I have two images for. I know buttons include the "-relief" option so I can get rid of the border. Now I'm trying to get rid of the click animation border, and have the image on the button change when clicked.

Thanks in advanced.

3
Contributors
3
Replies
10
Views
5 Years
Discussion Span
Last Post by floatingshed
0

So I was struck by inspiration moments ago. I decided to replace buttons with canvases bound with a <Button-1> event to imitate a button.

def NewGame(event):
    NewButton.place_forget()
    LoadButton.place_forget()
    CreditsButton.place_forget()
    New()

def ClickNew(event):
    for x in NewButton.find_all():
        NewButton.delete(x)
        ImageNew = ImageTk.PhotoImage(Image.open("New Click.PNG"))
    NewButton.create_image(0,0,anchor=NW,image=ImageNew)
    NewButton.image = ImageNew


ImageNew = ImageTk.PhotoImage(Image.open("New.PNG"))
NewButton = Canvas(canvas, width = 144, height = 50)
NewButton.place(x=50,y=175)
NewButton.create_image(0,0,anchor=NW,image=ImageNew)
NewButton.image = ImageNew
NewButton.bind("<Button-1>",ClickNew)
NewButton.bind("<ButtonRelease-1>",NewGame)

Which works to allow an image change on click. If there is a way for this to be done with a button, I would still be interested. If not, then this code can still help others.

Edited by Thropian: n/a

0

Just one idea how you do this ...

# toggle a Tkinter button up/down 
# using images and no button border
# tested with Python 2.7 and Python 3.2 by vegaseat

try:
    # Python2
    import Tkinter as tk
except ImportError:
    # Python3
    import tkinter as tk

def action(toggle=[True]):
    """
    toggle the button with up/down images,
    using a list element as static variable
    """
    if toggle[0]:
        button.config(image=image_down)
        toggle[0] = False
    else:
        button.config(image=image_up)
        toggle[0] = True
    

root = tk.Tk()
root.title("up/down button no border")

# pick GIF images you have in the working directory
# or give full path
image_up = tk.PhotoImage(file='up.gif')
image_down = tk.PhotoImage(file='down.gif')

# create a button to display the image
# use bd or borderwidth zero for no border
# start with button image up
button = tk.Button(root, image=image_up, bd=0, command=action)
# position the widgets
button.grid(row=1, column=1, padx=130)

root.mainloop()
Attachments down.gif 3.25 KB up.gif 3.24 KB
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.