Вы должны запустить код между with
и join()
- и использовать mainloop()
, чтобы показать окно tkinter
with keyboard.Listener(on_press=onpress) as listener:
win = tk.Tk()
labelval = tk.StringVar()
lab = tk.Label(win, textvariable=labelval)
lab.grid(column=0,row=0)
win.mainloop()
listener.join()
или как минимум mainloop()
win = tk.Tk()
labelval = tk.StringVar()
lab = tk.Label(win, textvariable=labelval)
lab.grid(column=0,row=0)
with keyboard.Listener(on_press=onpress) as listener:
win.mainloop()
listener.join()
Вы можете написать это также без with()
listener = keyboard.Listener(on_press=onpress)
listener.start()
win = tk.Tk()
labelval = tk.StringVar()
lab = tk.Label(win, textvariable=labelval)
lab.grid(column=0,row=0)
win.mainloop()
listener.join()
Кстати: вы создали labelval
, но вы использовали textvariable=entryval
Вкл Linux Мне пришлось использовать другой метод распознать 1
import tkinter as tk
from pynput import keyboard
listen = False
def onpress(key):
global listen
#if key == keyboard.Key.esc:
if str(key) == 'Key.esc':
listen = not listen
if listen:
if hasattr(key, 'char') and key.char == '1':
labelval.set(labelval.get()+'1')
print('1!')
win = tk.Tk()
labelval = tk.StringVar()
lab = tk.Label(win, textvariable=labelval)
lab.grid(column=0,row=0)
with keyboard.Listener(on_press=onpress) as listener:
win.mainloop()
listener.join()