点击时的Tkinter按钮浮雕效果
在Tkinter中,按钮有一个叫做“relief”的属性。这个属性默认是“raised”,也就是按钮看起来是凸起的,当你按下按钮时,它会变成“sunken”,也就是凹下去的样子。我设置了这个属性为“FLAT”,但是当我点击这个按钮时,它还是变成了凹下去的样子。有没有办法让它在被点击时显示不同的样子呢?这是不是需要改变边框的颜色呢?
Button(text=day, width=2,
relief=FLAT, activebackground = self.color_clicked,
background = self.today_color)
这个按钮看起来是平的,但当我点击它时,它会变成凹下去的样子(当然,当我松开时,它又会变回平的)。
3 个回答
0
把鼠标点击的功能绑定上去并不是正确的解决办法,因为配置代码是在按钮被按下并且松开后才执行的。Bryan 提出的使用标签的建议,似乎是实现这个功能最简单的方法。
6
把 -borderwidth
(-bd)
设置为 0
对我来说有效。按钮的文字在按下的时候还是会往下移动,表示按钮被按下了,但凹陷的边框就不会出现了。
5
你可以把鼠标点击和一个函数关联起来,这个函数可以让按钮保持平坦,不会像默认那样在点击时变得凹下去。
def keep_flat(event): # on click,
if event.widget is btn: # if the click came from the button
event.widget.config(relief=FLAT) # enforce an option
def callback():
print('button clicked')
root = Tk()
btn = Button(root, text='click', relief=FLAT, command=callback)
btn.pack()
root.bind('<Button-1>', keep_flat) # bind the application to left mouse click
mainloop()
另外一个方法是把按钮的点击事件绑定到字符串“break”,这样可以阻止任何常规的事件处理程序启动(包括按钮的 command
选项):
btn.bind('<Button-1>', lambda e: 'break')
http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm