Ответ 1
Попробуйте запустить следующую программу. Вы просто должны быть уверены, что ваше окно сосредоточено, когда вы нажмете Return - чтобы убедиться, что это так, сначала нажмите кнопку несколько раз, пока не увидите какой-то вывод, а затем не щелкнув нигде, нажмите Return.
import tkinter as tk
root = tk.Tk()
root.geometry("300x200")
def func(event):
print("You hit return.")
root.bind('<Return>', func)
def onclick():
print("You clicked the button")
button = tk.Button(root, text="click me", command=onclick)
button.pack()
root.mainloop()
Затем вы просто немного измените настройки при вызове функции button click
и hitting Return
одной и той же функции, потому что функция команды должна быть функцией, которая не принимает аргументов, тогда как функция связывания должна быть функция, которая принимает один аргумент (объект события):
import tkinter as tk
root = tk.Tk()
root.geometry("300x200")
def func(event):
print("You hit return.")
def onclick(event=None):
print("You clicked the button")
root.bind('<Return>', onclick)
button = tk.Button(root, text="click me", command=onclick)
button.pack()
root.mainloop()
Или вы можете просто отказаться от аргумента команды кнопки и вместо этого использовать bind(), чтобы привязать функцию onclick к кнопке, что означает, что функция должна принимать один аргумент - точно так же, как с Return:
import tkinter as tk
root = tk.Tk()
root.geometry("300x200")
def func(event):
print("You hit return.")
def onclick(event):
print("You clicked the button")
root.bind('<Return>', onclick)
button = tk.Button(root, text="click me")
button.bind('<Button-1>', onclick)
button.pack()
root.mainloop()
Здесь он находится в настройке класса:
import tkinter as tk
class Application(tk.Frame):
def __init__(self):
self.root = tk.Tk()
self.root.geometry("300x200")
tk.Frame.__init__(self, self.root)
self.create_widgets()
def create_widgets(self):
self.root.bind('<Return>', self.parse)
self.grid()
self.submit = tk.Button(self, text="Submit")
self.submit.bind('<Button-1>', self.parse)
self.submit.grid()
def parse(self, event):
print("You clicked?")
def start(self):
self.root.mainloop()
Application().start()