Auto-complétion à partir d'une liste Python
Résolu
Bonjour, je suis actuellement bloqué sur un projet, je souhaiterais utiliser une interface avec le module tkinter et utiliser une entry qui lorsque l'on écrit dedans, pré suggère les mots qui correspondent aux premières lettres entrées à partir d'une liste dans le programme
Je me suis inspiré des sites comme : https://askcodez.com/comment-lauto-completion-de-code-python.html
https://stackoverflow.com/questions/7821661/how-to-write-code-to-autocomplete-words-and-sentences?answertab=modifieddesc#tab-top
mais je n'arrive pas a l'adapter à ma recherche sous Python 3.10.4
code :
Je me suis inspiré des sites comme : https://askcodez.com/comment-lauto-completion-de-code-python.html
https://stackoverflow.com/questions/7821661/how-to-write-code-to-autocomplete-words-and-sentences?answertab=modifieddesc#tab-top
mais je n'arrive pas a l'adapter à ma recherche sous Python 3.10.4
code :
from pyreadline3 import Readline readline = Readline() import tkinter acceuil = tkinter.Tk() acceuil.title("Acceuil") acceuil.config(bg="#FFFFFF") acceuil.geometry("1080x720") acceuil.maxsize(1080,720) acceuil.minsize(480,360) class MyCompleter(object): # Custom completer def __init__(self, options): self.options = sorted(options) def complete(self, text, state): if state == 0 : # on first trigger, build possible matches if text : # cache matches (entries that start with entered text) self.matches = [s for s in self.options if s and tkinter.S.startswith(text)] else: # no text entered, all matches possible self.matches = self.options[:] # return match indexed by state try : return self.matches[state] except IndexError: return None completer = MyCompleter(["Bonjour","nous","sommes","des","mots","test"]) readline.set_completer(completer.complete) readline.parse_and_bind('tab: complete') selecteur2 = tkinter.Entry(acceuil, width = 30, bd = 5, font = "Arial", justify = "center", background = "green", text = readline.set_completer(completer.complete) ) selecteur2.place(x = 20, y = 100) acceuil.mainloop()
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
Configuration: Windows / Chrome 101.0.4951.54
A voir également:
- Auto-complétion à partir d'une liste Python
- Liste déroulante excel - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Citizen code python avis - Accueil - Outils
- Liste déroulante en cascade - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
ne devrais-tu pas commencer par faire un code tkinter qui fonctionne, pui sl'adapter?
ne devrais-tu pas commencer par faire un code tkinter qui fonctionne, pui sl'adapter?
Bonjour,
Le problème avec pyreadline3, ça ne marche pas sous Linux, donc personnellement je ne peux pas tester ce que tu as fait. Donc peux-tu plutôt repartir de cet exemple après avoir installé
Bonne chance
Le problème avec pyreadline3, ça ne marche pas sous Linux, donc personnellement je ne peux pas tester ce que tu as fait. Donc peux-tu plutôt repartir de cet exemple après avoir installé
ttkwidgets, qui lui fonctionne correctement ? Pour installer le module en question :
- Sous Windows :
pip install ttkwidgets
- Sous Linux (Ubuntu, Debian) :
sudo apt update sudo apt install python3-pip sudo pip3 install ttkwidgets
Bonne chance
Explique aussi ce que tu veux précisément réaliser.
Code pyreadline3 :
Le code que j'ai essayé en intégrant les 2 est le premier publié.
Mon objectif est de pouvoir (à partir d'une liste de différents mots fournis dans le code) de pouvoir écrire 1 lettre/chiffre dans le et que le programme suggère les différents mots complets qui commence par cette même lettre/chiffre à la façon d'une auto-complétion, et qu'en appuyant sur une touche donnée, le mot s'écrive au complet.
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code