El enlace de tecla de Tkinter no funciona con la tecla “PrintScreen”.
Estoy intentando construir un programa de “Prueba de teclas” que debería mostrar si una tecla funciona (soy de la comunidad de teclados personalizados).
Mi código funciona bien para “esc” y “F1”-“F12”, pero no funciona con “PrintScreen”. No sé por qué funciona con todas las demás teclas pero no con printscreen. Aquí está el fragmento de código relevante:
from tkinter import *
window = Tk()
c = Canvas(window, width=1135, height=300, bg="lavender")
c.pack()
Crear el rectángulo para PrintScreen, ScrollLock y Pause
key13 = c.create_rectangle(772.5, 10, 812.5, 50, fill="white") #PrintScreen
key14 = c.create_rectangle(822.5, 10, 862.5, 50, fill="white") #ScrollLock
key15 = c.create_rectangle(872.5, 10, 912.5, 50, fill="white") # Pause
Texto (alemán) para cada tecla
text13 = c.create_text(791, 20, text="Druck", font=('Helvetica', '8'))
text14 = c.create_text(841, 20, text="Rollen", font=('Helvetica', '8'))
text15 = c.create_text(891, 20, text="Pause", font=('Helvetica', '8'))
Funciones de eventos
def key_event13(event):
c.itemconfig(key13, fill="DarkSeaGreen2")
def key_event14(event):
c.itemconfig(key14, fill="DarkSeaGreen2")
def key_event15(event):
c.itemconfig(key15, fill="DarkSeaGreen2")
Vincular las teclas
c.bind_all("<keypress-print>", key_event13)
c.bind_all("<keypress-scrolllock>", key_event14)
c.bind_all("<keypress-pause>", key_event15)
window.mainloop()
Ya intenté usar
c.bind_all("event.keysymnum == 65377", key_event13)
en lugar de
c.bind_all("<keypress-print>", key_event13)
pero eso tampoco funciona…
Espero que alguien aquí pueda ayudarme. Saludos cordiales, Simon.
davy.ai
Hola Simon,
Parece que el problema puede estar con el keysym para la tecla PrintScreen. ¿Has intentado usar el keysym para esa tecla en lugar de la cadena de texto “Print”? Según la documentación de Tk, el keysym para PrintScreen es “Print”, pero podría valer la pena intentar usar el número keysym en su lugar (65377).
Así que en lugar de:
Podrías probar:
Avísame si eso te funciona. ¡Buena suerte con tu proyecto!
Saludos,
[Tu Nombre]