Usar verificação de teclado com tkinter

Boa noite :upside_down_face:.
Estou fazendo um projeto novo e nele eu presiso colocar uma verificação de tecla, tipo vai estar rodando uma interface tkinter e quero que em fundo fique rodando a verificação e quando eu apertar uma tecla ele rodar algo que eu programar.
Porém esta acontecendo o seguinte, eu estou usando a a biblioteca pynput para isso então eu estou fazendo o seguinte:

from tkinter import *
from pynput.keyboard import Key, Listener

window = Tk()

def on_press(key):
    print('{0} pressed'.format(
        key))

def on_release(key):
    print('{0} release'.format(
        key))
    if key == Key.esc:
        return False

with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

window.mainloop()

Esse é só um exemplo…

Porém oque acontece como esperado que ele executa a verificação primeiro e apos você pressionar a tecla ele abre a interface, e se você colocar a função fora ele ele executa primeiro a interface e apenas após você fechar a interface que libera a verificação.
Então minha duvida é a seguinte: Como eu poderia rodar essa verificação em segundo plano? :smile:

1 Curtida

Olá @deyvidd !

Eu não tenho certeza se entendi o que você está tentando fazer, contudo fiz um exemplo:

# -*- coding: utf-8 -*-
"""."""
import tkinter as tk


def _on_key_pressed(event):
    text = f'Tecla {repr(event.char)} pressionada.'
    label['text'] = text


def _on_key_release(event):
    text = f'Tecla {repr(event.char)} liberada.'
    label['text'] = text


root = tk.Tk()
root.title(string='Janela principal')

width = round(number=root.winfo_screenwidth() / 2)
height = round(number=root.winfo_screenheight() / 2)
root.geometry(newGeometry=f'{width}x{height}')
root.minsize(width=width, height=height)

root.bind(sequence="<Key>", func=_on_key_pressed)
root.bind(sequence="<KeyRelease>", func=_on_key_release)

# Frame.
frame = tk.Frame(master=root)
frame.pack(expand=True, fill=tk.BOTH, padx=10, pady=10)

label = tk.Label(master=frame, text='Pressione qualquer tecla')
label.pack(expand=True, fill=tk.BOTH)

root.mainloop()

No meu GitHub montei um conteúdo sobre Tkinter, talvez tenha algo lá que possa ajudar também.

2 Curtidas

Blz vou dar uma analisada no código e tals…

vlw.
eu di uma olhada em como eu poderia usar no meu projeto e funcionou certinho… :upside_down_face: