我正在使用TKinter为正在执行的项目构建GUI。我想知道是否可以让TKinter显示图像代替一个没有边框的按钮,只显示要单击的图像。 而不是在按钮上方显示,而按钮边框仍然存在,我知道可以使用以下代码实现:
photo=PhotoImage(file="add.png")
b = Button(master,image=photo, command=callback, height=50, width=150)
b.pack()
这将导致类似this tutorial中显示的内容
我希望我能清楚地解释自己;预先感谢!
答案 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()