Я пытаюсь выяснить, как заставить клавишу ввода вести себя так же, как клавиша пробела в tkinter. Пока единственное, что подошло, - это привязка клавиши ввода к кнопке. Это функционирует, пока все хорошо.
НО: визуально они не одинаковы. Когда вы нажимаете пробел, рельеф кнопки на мгновение меняется на SUNKEN. Привязка клавиш или вызов invoke () не имеют такого же визуального эффекта.
При попытке найти ответ я, возможно, обнаружил ошибку. При нажатии кнопки в течение 5-10 секунд с пробелом, RELIEF постоянно меняется на SUNKEN. Независимо от того, как долго вы ждете. Итак, это еще одна вещь, для которой мне нужно обойти. Возможно, после вызова функции сбрасывается состояние кнопки .... Я попробую это.
Вот пример кода, который не работает должным образом:
import tkinter as tk
root = tk.Tk()
root.geometry("300x200")
# if you press the enter key, buttons will call their own invoke function
# yet they won't show the effect of pressing space or clicking a button.
# When you press space or click a button the RELIEF will get changed.
# HOWEVER: When you hold space, the relief will get changed to SUNKEN permanently.
# That might me a bug.
root.bind_class("Button", "<Key-Return>", lambda event: event.widget.invoke())
def onclick():
print("You clicked the button")
button = tk.Button(root, text="click me", command=onclick)
button.pack()
# it's not a callback issue that the button remains SUNKEN after holding space for a bit.
button2 = tk.Button(root, text="this button has no command")
button2.pack()
root.mainloop()
РЕДАКТИРОВАТЬ: Я на win10.