IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Créé une classe de boutons de menu avec la class ttk.Button [Python 3.X]


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Par défaut Créé une classe de boutons de menu avec la class ttk.Button
    '''
    Bonjour,
    Je suis confronté au problème suivant dans PyCharm 2024.1.4.:
    Dans une fenêtre, on pose un Frame nommé option_frame dans lequel sont insérés des boutons ttk.Button créés par la classe Option(ttk.Button).
    Un click sur un des boutons (option) doit faire apparaitre un messagebox un message indiquant l'index du bouton cliqué.
    PROBLEMES: les paramètres des boutons créés ne sont pas visualisés (exemple: text et couleurs) ou fonctionnels comme l'attribut command.
    Remarques:
    L'objectif est de créer un menu qui permettra d'ouvrir un frame propre à chaque bouton dans main_frame.
    Chaque frame correspondant à une option du menu sera créé dans un fichier individuel qui sera inclus dans ce code lors de l'appel de l'option.

    MERCI PAR AVANCE POUR VOTRE AIDE
    '''

    import tkinter as tk
    from tkinter import ttk
    from tkinter import messagebox

    root = tk.Tk()
    root.geometry('500x400')
    root.title('Application')

    option_frame = tk.Frame(root, bg='#c3c3c3')
    main_frame = tk.Frame(root, bg='#a0a0a0', highlightbackground='black', highlightthickness=2)

    def msg(index):
    messagebox.showwarning('Confirmation', 'Frame supprimé : ' + str(index))

    class Option(ttk.Button):
    def __init__(self,index):
    super().__init__(master=option_frame)
    self.index = index
    self.text = 'Option: '+str(index)
    self.place(x=10, y=40*(index+1))
    self.font = ('Bold', 4)
    self.fg = '#158aff'
    self.bg = '#c3c3c3'
    self.activebackground = '#c3c3c3'
    self.command = lambda: msg(self.index)


    option_frame.pack(side=tk.LEFT)
    option_frame.pack_propagate(False)
    option_frame.configure(width=100, height=400)

    main_frame.pack_propagate(False)
    main_frame.configure(width=500, height=400)
    main_frame.pack(side=tk.LEFT)

    Nb = 4

    for i in range(Nb):
    Option(i)

    root.mainloop()
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Citation Envoyé par gugurnuk Voir le message
    Dans une fenêtre, on pose un Frame nommé option_frame dans lequel sont insérés des boutons ttk.Button créés par la classe Option(ttk.Button)
    Option est un ttk.Button. Du coup les attributs ttk de cet objets sont modifiés via les paramètres passés à la création ou via la méthode configure (ou le style). Ici, vous pensez surcharger des attributs qui n'existent pas. Ca ne marche pas.. mais a vous d'étudier comment ça marche avant de vouloir changer des trucs.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Option est un ttk.Button. Du coup les attributs ttk de cet objets sont modifiés via les paramètres passés à la création ou via la méthode configure (ou le style). Ici, vous pensez surcharger des attributs qui n'existent pas. Ca ne marche pas.. mais a vous d'étudier comment ça marche avant de vouloir changer des trucs.

    - W
    L'idée est de tout gérer dans la classe en fonction de l'index en ne passant pour paramètre que cet index justement.
    Mais vous n'avez mis sur la bonne piste et j'ai pu résoudre le problème.
    MERCI wiztricks

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Citation Envoyé par gugurnuk Voir le message
    L'idée est de tout gérer dans la classe en fonction de l'index en ne passant pour paramètre que cet index justement.
    Je ne vois pas l'intérêt de refaire ce que Tk fait déjà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> import tkinter as tk
    >>> frame = tk.Frame()
    >>> for i in range(3):
    ...     tk.Button(frame, name=f'b-{i}').pack()
    ...
    >>> frame.pack_slaves()
    [<tkinter.Button object .!frame.b-0>, <tkinter.Button object .!frame.b-1>, <tkinter.Button object .!frame.b-2>]
    >>>
    mais c'est vous qui codez...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Démarrer/arrêter une classe avec des boutons
    Par thedev44 dans le forum Général Java
    Réponses: 5
    Dernier message: 05/09/2016, 09h29
  2. [XL-2003] Ajouter un bouton au menu standard avec une macro
    Par loulag07 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/08/2012, 06h47
  3. [CKEditor] Bouton créant une div avec une class personnelle
    Par Nowwis dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 27/03/2011, 14h03
  4. Réponses: 6
    Dernier message: 18/08/2009, 08h13
  5. Réponses: 9
    Dernier message: 24/03/2007, 22h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo