j'apprends Python à mon rythme depuis en gros un an. En ce moment, je travaille lentement mais surement sur une petite application en fenêtre (tkinter) qui gère une base de données de livres que j'alimente régulièrement.
L'idée c'est de pouvoir stocker les bouquins que j'ai lus, faire des recherches basiques (titres, éditeurs, année de parution, etc...), et pouvoir interagir facilement avec la base de données pour modifier des champs si besoin.
Actuellement, la hiérarchie de l'application est bien cloisonnée (une fenêtre pour modifier les références, une fenêtre pour en ajouter, une fenêtre pour faire des recherches...), mais pour rendre ça moins rigide j'aimerai qu'au cours d'une recherche, en cliquant sur une référence, on puisse accéder facilement à un formulaire de modification.
Concrètement, le résultat des recherches apparait dans un widget texte, sous la forme suivante :
En cliquant sur une référence (mettons la première, donc la 449), j'aimerai qu'une fenêtre pop-up s'ouvre, permettant de modifier les données du titre (année, auteur...), mais je n'arrive pas à mettre en place cette fonctionnalité. Je sais que je dois utiliser un tag sur le chiffre de la référence, un genre de lien hypertexte, lié à une fonction qui lance l'ouverture de la fenêtre, mais je ne trouve pas comment faire pour récupérer aussi la référence en elle-même, puisque je ne peux pas passer d'arguments dans le bind du tag.
Je m'imaginais insérer ce type de tag autour de la référence :
pour obtenir après un clic, une fenêtre dans ce genre:
mais cela requiert de passer la référence en argument de la fonction self.modifierTitre pour que les champs de la fenêtre soit bien ceux de la référence sur laquelle je clique.
Je ne trouve pas de solution, c'est pourquoi j'ai besoin votre aide.
Merci d'avance pour vos réponses et le temps passé à me lire. Si je n'ai pas été assez clair dans la description de mon problème, ou qu'il manque des éléments pour que vous puissiez répondre (code source, etc.), n'hésitez pas à me le dire.
Je n'ai pas de réponse très précise mais la fonction callback qui va être appelé lorsque l'évènement est exécuté (clic) peut récupérer les coordonnées x,y de ton curseur et c'est là que tu devra en déduire sur quelle ligne on a cliqué.
Quand dans ta fonction callback tu aura récupéré la ligne (donc l'id) correspondante tu pourra ouvrir ta fenêtre en lui attribuant à la création un id
il faudrait que ta fenêtre de base de données de livres comprenne une méthode de création (__init__) auquel on passerai un argument id.
Tu vois où je veux en venir ?
Tkinter et le widget Text
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.