2017-05-02 1 views
0

J'ai un morceau de code similaire à ceci:Python Tkinter Keybinds et boutons se bloquent mutuellement?

def create_main(self): 

    self.bind("<Left>", lambda e:self.function()) 
    self.button1 = Button(self, ...) 
    self.button1.grid(row=0, column =0) 

    #furtherbuttons... 

def function(self): 
    print('test') 

Le problème que j'ai avec ce code est que la fonction ne sera jamais appelé si je presse de gauche. Je l'ai essayé avec différents boutons et la souris, les boutons de la souris fonctionnent toujours très bien mais le clavier ne fait rien.

J'ai lu quelque chose à propos des boutons bloquant l'action de liaison, mais pas de solution à ce problème.

+1

Veuillez ajouter un peu plus et publier un MCVE https://stackoverflow.com/help/mcve. –

+0

Les boutons ne bloquent pas l'action de liaison. Voir http://stackoverflow.com/q/16923167/7432 –

+0

Je suppose que "self" est un cadre? Vous avez probablement besoin de lier à la racine. – Novel

Répondre

0

Voici un MCVE qui fonctionne avec 3.6.1 sur Win10.

import tkinter as tk 
root = tk.Tk() 

def handle(event=None): 
    print(event) 
    return 'break' 

root.bind('<Left>', handle) 
tk.Button(root, text='button', command=handle) 
root.mainloop() 

Les deux < - et à gauche événement print cliquez arg. Aucune interférence ou blocage.