取消选择 tkinter canvas 按钮
deselect tkinter canvas buttons
我有一个由 tkinter canvas button 创建的按钮,我绑定了它,这样当我按下它时,它会给我一个“凹陷”的效果和一个值。但是我想给它另一种效果,这样当我再次按下它时,它会恢复正常,即“平坦”。
def press(canvas1, y):
canvas1.configure(relief="sunken")
print(y)
canvas = tk.Canvas(root, width=50, height=20, borderwidth=1)
buttonBG1 = canvas.create_rectangle(0, 0, 50, 20, outline="", activefill="#F1F1F1")
buttonTXT1 = canvas.create_text((25, 10), text="button", font=("Calibri", 8))
canvas.tag_bind(buttonBG1, "<ButtonPress-1>", lambda x: press(canvas, 100))
canvas.tag_bind(buttonTXT1, "<ButtonPress-1>", lambda x: press(canvas, 100))
他们的方法是当我第二次按下按钮时,就像释放的效果,但我想按下以释放。
您可以切换按钮的外观值;在这里,我们使用闭包来跟踪状态。
import tkinter as tk
def press(canvas1, y, toggle=('sunken', 'flat'), _turn=[0]):
canvas1.configure(relief=toggle[_turn[0]])
_turn[0] = (_turn[0] + 1) % 2
print(y)
if __name__ == '__main__':
root = tk.Tk()
canvas = tk.Canvas(root, width=50, height=20, borderwidth=1)
canvas.pack(expand=True, fill=tk.BOTH)
buttonBG1 = canvas.create_rectangle(0, 0, 50, 20, outline="", activefill="#F1F1F1")
buttonTXT1 = canvas.create_text((25, 10), text="button", font=("Calibri", 8))
canvas.tag_bind(buttonBG1, "<ButtonPress-1>", lambda x: press(canvas, 100))
canvas.tag_bind(buttonTXT1, "<ButtonPress-1>", lambda x: press(canvas, 100))
root.mainloop()
我有一个由 tkinter canvas button 创建的按钮,我绑定了它,这样当我按下它时,它会给我一个“凹陷”的效果和一个值。但是我想给它另一种效果,这样当我再次按下它时,它会恢复正常,即“平坦”。
def press(canvas1, y):
canvas1.configure(relief="sunken")
print(y)
canvas = tk.Canvas(root, width=50, height=20, borderwidth=1)
buttonBG1 = canvas.create_rectangle(0, 0, 50, 20, outline="", activefill="#F1F1F1")
buttonTXT1 = canvas.create_text((25, 10), text="button", font=("Calibri", 8))
canvas.tag_bind(buttonBG1, "<ButtonPress-1>", lambda x: press(canvas, 100))
canvas.tag_bind(buttonTXT1, "<ButtonPress-1>", lambda x: press(canvas, 100))
他们的方法是当我第二次按下按钮时,就像释放的效果,但我想按下以释放。
您可以切换按钮的外观值;在这里,我们使用闭包来跟踪状态。
import tkinter as tk
def press(canvas1, y, toggle=('sunken', 'flat'), _turn=[0]):
canvas1.configure(relief=toggle[_turn[0]])
_turn[0] = (_turn[0] + 1) % 2
print(y)
if __name__ == '__main__':
root = tk.Tk()
canvas = tk.Canvas(root, width=50, height=20, borderwidth=1)
canvas.pack(expand=True, fill=tk.BOTH)
buttonBG1 = canvas.create_rectangle(0, 0, 50, 20, outline="", activefill="#F1F1F1")
buttonTXT1 = canvas.create_text((25, 10), text="button", font=("Calibri", 8))
canvas.tag_bind(buttonBG1, "<ButtonPress-1>", lambda x: press(canvas, 100))
canvas.tag_bind(buttonTXT1, "<ButtonPress-1>", lambda x: press(canvas, 100))
root.mainloop()