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

Python Discussion :

Widget Treeview - vérouuiller la largeur des colonnes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Widget Treeview - vérouuiller la largeur des colonnes
    bonjour à tous,

    j'ai testé selon la doc
    mais je n'obtient pas le résultat escompté.
    La colonne s'élargie toujours (largeur augmente), alors que je veux quelle soit totalement verrouillée

    voici le script et merci votre temps

    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
     
    # coding:utf-8
    #version 3.x python
    # DOC --> https://www.tcl.tk/man/tcl8.5/TkCmd/ttk_treeview.htm#M17
     
    from tkinter import *
    from tkinter.ttk import *
    import sqlite3
     
    # Connexion DB
    con = sqlite3.connect("HE.db")
    cur = con.cursor()
    cur.execute("SELECT id, HE_Nom, HE_Prop, HE_Dosage FROM HE ORDER BY HE_Nom ASC")
    mData = cur.fetchall()
    print("Nombre d'enregistrement", len(mData))
     
    win = Tk()
    win.title('Huiles Essentiels')
    win.geometry("820x559+30+30")
     
    # Frame
    frm = Frame(win)
    frm.place(x=10, y=10, width=600, height=150)
     
    # Treeview & Y Scrollbar Vertical & X Scrollbar Vertical
    scrollbar_y = Scrollbar(frm)
    scrollbar_y.place(x=580, y=2, height=149)
     
    tv=Treeview(frm, selectmode="browse", columns=(1,2,3), show="headings", height="5", yscrollcommand=scrollbar_y.set)
        # En-tête
    tv.heading(1, text="HE", anchor=W)
    tv.heading(2, text="Description", anchor=W)
    tv.heading(3, text="Dosage", anchor=W)
     
    tv.column('#1', width=150, minwidth=150, stretch=False)
    tv.column('#2', width=350, minwidth=350, stretch=False)
    tv.column('#3', width=50, minwidth=50, stretch=False)
    tv.place(x=2, y=2, width=578, height=180)
    # tv.columnconfigure(1, pad=10)
    # tv.columnconfigure(2, weight=0)
    # tv.columnconfigure(3, weight=0)
     
    scrollbar_y.config(command=tv.yview)
     
        # Affichage
    a = 0
    for i in mData:
        tv.insert('', 'end', text=i[0], values=(i[1],i[2],i[3]))
        print("Index", i[0])
        a = a + 1
    print("Nombre d'enregistrement", a)
     
     
    win.mainloop()

  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
    Salut,

    Pouvez vous préciser ce que vous faites pour arriver à "augmenter" la largeur?
    Chez moi, lorsque je change la taille de la fenêtre, elle ne bouge pas.

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

  3. #3
    Invité
    Invité(e)
    Par défaut
    je positionne la souris sur le bord droite du premier header puis étire en allant sur la droite. Si je vais sur la gauche, la dimension ne diminue pas.

    Nom : _29.jpg
Affichages : 1714
Taille : 53,2 KoNom : _30.jpg
Affichages : 1639
Taille : 51,6 Ko

  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
    Salut,

    Le strech n'affecte que la distribution d'espace supplémentaire entre les différentes colonnes lorsqu'on modifie les dimensions du widget (par exemple via la fenêtre qui le contient, jouez avec le code ci dessous).
    Çà n’empêche pas l'utilisateur de modifier la largeur d'une colonne.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from tkinter import *
    from tkinter import ttk
     
    root = Tk()
    w = ttk.Treeview(root, show="headings", columns=('Column1', 'Column2'))
    w.heading('#1', text='Column1', anchor=W)
    w.heading('#2', text='Column2', anchor=W)
     
    w.column('#1', minwidth = 70, width = 70, stretch = False)
    w.column('#2', minwidth = 70, width = 70, stretch = True)  
     
    w.pack(expand=1, fill='x')
     
    mainloop()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Invité
    Invité(e)
    Par défaut
    voici la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        # [Treeview - Heading] - Empêche le redimensionnement des entêtes
        def handle_click(event):
            if HElist.identify_region(event.x, event.y) == "separator":
                    if HElist.identify_column(event.x) == '#1':
                        return "break"
                    if HElist.identify_column(event.x) == '#2':
                        return "break"
                    if HElist.identify_column(event.x) == '#3':
                        return "break"
                    if HElist.identify_column(event.x) == '#4':
                        return "break"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        # Désactive le redimensionnement des Entêtes Treeview
        HElist.bind('<Button-1>', handle_click)                 # Gauche
        HElist.bind('<Button-2>', handle_click)                 # Molette
        HElist.bind('<Button-3>', handle_click)                 # Droite

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

Discussions similaires

  1. Largeur des colonnes de datagrid
    Par ShortcutZ dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/12/2005, 19h33
  2. [TDbGrid] Comment modifier la largeur des colonnes ?
    Par colorid dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/11/2005, 18h47
  3. [Spreadsheet-WriteExcel] Largeur des colonnes Excel
    Par Longrais dans le forum Modules
    Réponses: 2
    Dernier message: 17/10/2005, 16h41
  4. Comment fixer les largeurs des colonnes d'un TStrinGrid
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/08/2005, 13h24
  5. Fixer la largeur des colonnes d'une CListCtrl
    Par Depteam1 dans le forum MFC
    Réponses: 4
    Dernier message: 28/06/2005, 15h46

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