Я пишу приложение tkinter на Python 3.12.0 (в Windows) и хочу связать другой «Enter» (который находится в части Num-Lock клавиатуры), чтобы, когда я нажимаю ее, отправить мое сообщение.
Я использую текстовый виджет, и мне нужен основной Enter для разрыва строки.
Я решил свою проблему с помощью кода ниже, и он работает на моем система; Но я ищу лучшее решение и не знаю, работает ли эта функция в других системах или даже в другой ОС.
Код: Выделить всё
def foo(event=None):
if not (event.keysym=="Return" and event.state in [
262144, # Caps Lock Off, Num Lock Off, Scroll Lock Off
262146, # Caps Lock On , Num Lock Off, Scroll Lock Off
262152, # Caps Lock Off, Num Lock On , Scroll Lock Off
262154, # Caps Lock On , Num Lock On , Scroll Lock Off
262176, # Caps Lock Off, Num Lock Off, Scroll Lock On
262178, # Caps Lock On , Num Lock Off, Scroll Lock On
262184, # Caps Lock Off, Num Lock On , Scroll Lock On
262186, # Caps Lock On , Num Lock On , Scroll Lock On
]):
return
# do the code
Edit:
As I told in the first place: I want to use only the second Enter button and I think I couldn't get my point across.
Here is my code:
Код: Выделить всё
import tkinter as tk
def foo(event=None):
print(event)
print(event.state)
# to bind only to other Enter, but not the main Enter:
if event!=None and (not (event.keysym=="Return" and event.state in [
262144, # Caps Lock Off, Num Lock Off, Scroll Lock Off
262146, # Caps Lock On , Num Lock Off, Scroll Lock Off
262152, # Caps Lock Off, Num Lock On , Scroll Lock Off
262154, # Caps Lock On , Num Lock On , Scroll Lock Off
262176, # Caps Lock Off, Num Lock Off, Scroll Lock On
262178, # Caps Lock On , Num Lock Off, Scroll Lock On
262184, # Caps Lock Off, Num Lock On , Scroll Lock On
262186, # Caps Lock On , Num Lock On , Scroll Lock On
])):
return
print("Yey!")
root = tk.Tk()
text = tk.Text(root, width=60, height=8)
text.bind('', foo)
text.pack()
tk.Button(root, text='Send', command=foo).pack()
root.mainloop()
Источник: https://stackoverflow.com/questions/781 ... on-tkinter