Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tkinter et le widget Text

tags

    23 novembre 2011 à 21:50:45

    Bonjour à tous,

    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 :

    Image utilisateur

    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 :

    self.frame.res.tag_configure("référence", foreground="blue")
    self.frame.res.tag_bind("référence","<Button-1>",self.modifierTitre)

    pour obtenir après un clic, une fenêtre dans ce genre: Image utilisateur
    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.

    Bonne soirée !

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      2 mars 2012 à 17:53:08

      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 ?
      • Partager sur Facebook
      • Partager sur Twitter

      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.
      • Editeur
      • Markdown