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

GUI Python Discussion :

Question Tableview ttkbootstrap


Sujet :

GUI Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2023
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2023
    Messages : 7
    Par défaut Question Tableview ttkbootstrap
    Bonjour à tous

    J'ai créé une Tableview ttkbootstrap , je voudrais savoir si on peut configurer la couleur , la police et autres attributs des colonnes et lignes du tableau. De même peut-on empêcher certaines ou toutes les options qui apparaissent sur clic droit (voir image)

    Merci

    Nom : Capture d'écran 2025-12-20 172514.png
Affichages : 122
Taille : 28,1 Ko

  2. #2
    Membre actif
    Homme Profil pro
    Animateur Numérique
    Inscrit en
    Février 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Animateur Numérique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 144
    Par défaut
    Salut,

    Pour modifier les couleurs, ça va être du bricolage car ttk applique des thèmes globaux qui peuvent écraser les couleurs définies par l’utilisateur.
    Je te conseille donc de trouver un thème qui te convient.

    Pour les polices et les options du clic droit voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    import ttkbootstrap as ttk
    from ttkbootstrap.widgets.tableview import Tableview
    from ttkbootstrap.constants import *
     
    app = ttk.Window(title="Tableview stylée", themename="solar")
     
    # ------------------------------------------------
    # STYLE HEADING
    # ------------------------------------------------
    style = ttk.Style()
    style.configure(
        "Treeview.Heading",
        font=("Arial", 12, "bold", "underline", "italic"),
    )
     
    style.configure(
        "Treeview",
        font=("Arial", 8, "bold"),
    )
     
    # ------------------------------------------------
    # DONNÉES
    # ------------------------------------------------
    coldata = ["Nom", "Prénom", "Age"]
    rowdata = [
        ("Legros", "Jean", 12),
        ("Smith", "Alice", 45),
        ("Johnson", "Bob", 36),
    ]
     
    # ------------------------------------------------
    # TABLEVIEW
    # ------------------------------------------------
    dt = Tableview(
        master=app,
        coldata=coldata,
        rowdata=rowdata,
        paginated=True,
        searchable=True,
        disable_right_click=True,
    )
     
    dt.pack(fill=BOTH, expand=YES)
     
    tree = dt.view
     
    # Redimensionner toutes les colonnes proportionnellement
    def resize_columns(event):
        total_width = tree.winfo_width()
        n_cols = len(tree["columns"])
        width = int(total_width / n_cols)
        for col in tree["columns"]:
            tree.column(col, width=width)
     
    # Binder à l’événement de redimensionnement de la fenêtre
    tree.bind("<Configure>", resize_columns)
     
     
    for col in tree["columns"]:
        tree.column(col, anchor="center")        # contenu des cellules
        tree.heading(col, anchor="center")       # texte du header
     
    app.mainloop()

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2023
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2023
    Messages : 7
    Par défaut
    Merci diablo76 pour ta réponse,

    Autre question si vous le voulez bien : Je voudrais sur clic d'un bouton changer le paramètre stripecolor=(colors.light, None) tableview
    (couleurs une ligne sur deux) mais je n'ai rien trouvé si ce n'est le code suivant qui ne fonctionne pas pour moi .

    Quand je clique sur le bouton je passe bien dans la fonction mais rien ne se passe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
        def apply_table_stripes(self,stripecolor):
            print("ok")
            """Add stripes to even-numbered table rows as indicated by the
            `stripecolor` of (background, foreground). Either element may be
            specified as `None`, but both elements must be present.
     
            Parameters:
     
                stripecolor (tuple[str, str]):
                    A tuple of colors to apply to the table stripe. The
                    tuple represents (background, foreground).
            """
            style: ttk.Style = ttk.Style.get_instance()
            colors = style.colors
            if len(stripecolor) == 2:
                self._stripecolor = stripecolor
                bg, fg = stripecolor
                kw = {}
                if bg is None:
                    kw["background"] = colors.active
                else:
                    kw["background"] = bg
                if fg is None:
                    kw["foreground"] = colors.inputfg
                else:
                    kw["foreground"] = fg
     
     
                self.dt.view.tag_configure("striped", **kw)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2023
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2023
    Messages : 7
    Par défaut
    Oups , en fait le code fonctionne mais il faut initialiser le paramètre stripecolor à la création de la table
    comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class Table1(object):
        def __init__(self, parent):
            self.dt = Tableview(
                master=parent,
                coldata=coldata,
                rowdata=rowdata,
                paginated=False,
                searchable=True,
                bootstyle=PRIMARY,
                stripecolor=(None, None),
                #pagesize=1,
                yscrollbar=True,
                disable_right_click=True,
                # on_select=self.handle_selection,
                # on_select=on_row_select,
                # height=20, # Number of visible rows
            )

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

Discussions similaires

  1. Problème Tableview ttkbootstrap
    Par leia64 dans le forum Tkinter
    Réponses: 3
    Dernier message: 14/05/2024, 09h18
  2. Réponses: 0
    Dernier message: 28/12/2019, 18h13
  3. Question Table /TableViewer
    Par Schtroumpf81 dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 15/06/2006, 00h47
  4. Question de faisabilité
    Par lisarasu dans le forum CORBA
    Réponses: 3
    Dernier message: 14/05/2002, 12h26
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 30/04/2002, 00h18

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