def gate(i):
input.bind('<Return>', gate(input.get('end-1c linestart', 'end-1c lineend')))
inputDatabase.run(i)
input.bind('<Return>', gate(input.get('end-1c linestart', 'end-1c lineend')))
input
est un objet texte tkinter.Comment avoir un keybind infinie en python 3 Tkinter
Je fais une console, de sorte que lorsque l'utilisateur appuie sur la touche de retour, il obtient la dernière ligne dans l'objet texte. Cela doit arriver pour toujours.
Donne RecursionError: maximum recursion depth exceeded
. Comment puis-je faire ce travail? J'ai essayé d'utiliser des threads, mais ils sont infinis, et parce qu'ils partagent la ressource (je pense) de l'objet texte, ils doivent utiliser des verrous, et je ne pouvais pas comprendre comment faire cela. Si quelqu'un pouvait expliquer comment utiliser les verrous, le filetage ou quoi que ce soit de ce genre, cela serait extrêmement utile. Merci! Aussi deux choses de plus: ne pas suggérer de changer la profondeur de récursion du système s'il vous plaît, et je préférerais aussi que la réponse soit procédurale plutôt que fortement orientée objet. Cela n'a cependant pas trop d'importance. Encore une fois, merci d'avance.
bind attendre nom de la fonction - cela signifie sans() et arguments. Maintenant, Python à la porte() l'exécution de démarrage '' lier résultat '' mais à l'intérieur 'porte()' 'est une autre porte()' si vous obtenez récursivité. Pourquoi utilisez-vous 'gate()' dans '' gate() '??? –
furas
@furas Alors qu'il fonctionnera toujours – Ember
il fonctionnera toujours (ou jusqu'à 'profondeur maximum de récursivité exceeded') mais je ne sais pas pourquoi vous avez besoin de cette construction. – furas