2017-06-02 6 views
1

J'ai une fonction que j'essaie d'appeler en appuyant sur deux touches du clavier. Exemple: Ctrl +NLes raccourcis clavier Python 3 tkinter appellent une fonction

self._first_event = None 
self._second_event = None 

def function(self, event): 
    if self._first_event == None: 
     self._first_event = event 
    else: 
     self._second_event = event 
     if self._first_event == 'Ctrl' and self._second_event == 'n': 
      return someotherfunction() 

J'ai essayé ce code, mais il ne remet pas le someotherfunction()

+0

s'il vous plaît nous montrer comment vous faites la liaison. –

Répondre

1

Ce code fait ce que vous essayez d'atteindre:

from tkinter import * 

def someotherfunction(e=None): 
    print('It works !') 

root = Tk() 
root.bind('<Control-n>', someotherfunction) 
root.mainloop() 

Je pense que c'est une façon plus appropriée de le faire que la façon dont vous essayez de le faire. Par ailleurs, si vous regardez le documentation de l'objet événement il contient plusieurs choses que vous ne pouvez pas comparer à une chaîne comme ça. Vous devriez utiliser event.keysym par exemple.

Note:

<a> correspondent à A

<A> correspondent à Maj + A

<Control-n> correspondent à Ctrl +N

<Control-N> correspondent à Ctrl +Maj +N

+0

Merci beaucoup, cela a fonctionné pour moi :) – aitsuri

+0

@aitsuri Je suis heureux qu'il vous aide :) Si elle résout votre problème, vous pouvez "accepter" la réponse pour indiquer que la question est "résolue" – Gabriel

+0

@aitsuri depuis que j'ai vu que vous n'avez jamais accepté la réponse avant de vous lier [ce] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) qui explique ce qu'est cette fonctionnalité pour – Gabriel