首页 > 解决方案 > 如何在 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 。请帮助提前谢谢。

标签: pythontkinter

解决方案


正如@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()

推荐阅读