您可以将图像显示为tkinter中的按钮而不是按钮上的图像吗?

时间:2018-12-31 14:34:58

标签: python image button tkinter

我正在使用TKinter为正在执行的项目构建GUI。我想知道是否可以让TKinter显示图像代替一个没有边框的按钮,只显示要单击的图像。 而不是在按钮上方显示,而按钮边框仍然存在,我知道可以使用以下代码实现:

photo=PhotoImage(file="add.png")
b = Button(master,image=photo, command=callback, height=50, width=150)
b.pack()

这将导致类似this tutorial中显示的内容

我希望我能清楚地解释自己;预先感谢!

1 个答案:

答案 0 :(得分:1)

如果您想要一个没有边框的按钮,可以将边框宽度设置为0:bd=0。按下图像时,图像仍将向右下方移动一个像素左右。

我还不够好,您可以使用“标签”创建自定义按钮,然后将鼠标按下并释放到该标签上。

from tkinter import *

root = Tk()

def callback_function():
    print('Button')

# Image button without border
button_img = PhotoImage(file='image_button.png')
b = Button(root, image=button_img, bd=0, command=callback_function)
b.pack(pady=10)

# Custom button using a label
up_img = PhotoImage(file='image_button_up.png')
dn_img = PhotoImage(file='image_button_dn.png')
e = Label(root, image=up_img, bd=0)
e.pack(pady=10)

# Functions for switching images when button is pressed/released
def press(event):
    e.config(image=dn_img)

def release(event):
    e.config(image=up_img)
    callback_function() # Invoke callback function on release

# Bindings for mouse on label
e.bind('<ButtonPress-1>', press)
e.bind('<ButtonRelease-1>', release)

root.mainloop()