python - 如何在 tkinter 中绑定按钮
问题描述
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.title("Tic Tac Toe")
root.geometry("505x500")
root.resizable(0,0)
Blank = tk.PhotoImage(file='Blank.png')
X = tk.PhotoImage(file='X.png')
O = tk.PhotoImage(file='O.png')
def configB(event):
print('hello')
btn1 = tk.Button(root,image=Blank)
btn1.place(x=0,y=0)
btn2 = ttk.Button(image=Blank)
btn2.place(x=165,y=0)
btn3 = ttk.Button(image=Blank)
btn3.place(x=330,y=0)
btn4 = ttk.Button(image=Blank)
btn4.place(x=0,y=165)
btn5 = ttk.Button(image=Blank)
btn5.place(x=165,y=165)
btn6 = ttk.Button(image=Blank)
btn6.place(x=330,y=165)
btn7 = ttk.Button(image=Blank)
btn7.place(x=0,y=330)
btn8 = ttk.Button(image=Blank)
btn8.place(x=165,y=330)
btn9 = ttk.Button(image=Blank)
btn9.place(x=330,y=330)
btn1.bind('<Return>',configB)
root.mainloop()
我想绑定 btn1,我希望它在我按 enter 时工作,但是当我按我的代码按 enter 时没有任何反应,它应该打印 hello 。请帮助提前谢谢。
解决方案
正如@jasonharper 所说,只有当按钮被聚焦时它才会起作用
btn1.focus()
btn1.bind('<Return>', configB)
如果您单击其他按钮,则它将不再起作用
所以更好地绑定到主winodw
root.bind('<Return>', configB)
最少的工作代码
import tkinter as tk
# --- functions --- # PEP8: lower_case_names
def config_b(event):
print('hello')
# --- main ---
root = tk.Tk()
btn1 = tk.Button(root, text='1')
btn1.pack()
btn1 = tk.Button(root, text='2')
btn1.pack()
#btn1.focus()
#btn1.bind('<Return>', config_b)
root.bind('<Return>', config_b)
root.mainloop()
推荐阅读
- go - 如何设置最大数量的 goroutine 来完成工作?
- windows - 在 Windows 10 中重新映射鼠标事件的最佳方法是什么?
- java - 如何在Java中将字符串值转换为布尔值
- wso2 - 我如何在 WSO2 API Manager 中更改用户代理标头
- arrays - 如何从C中的另一个数组制作一个反转数组
- java - 错误:不兼容的类型:上下文无法转换为 HomeMenu
- reactjs - react-router-dom5 活动类
- javascript - XMLHttpRequest 发送 1 个
- javascript - 如何在 HTML 中自动换行?
- c# - Uno.UI 3.3.x 真的需要更改 TargetFrameworks 吗?