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 :

défilement de la hauteur totale du canvas


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 32
    Par défaut défilement de la hauteur totale du canvas
    Bonjour,

    j'apprends à coder en Python et je bute sur le problème, dans ma fenêtre que j'ai créé je n'arrive pas à faire défiler le canvas (qui contient une liste sur 180 ligne et 5 colonnes) sur toute la hauteur de la fenêtre.

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
     
     
    #coding:utf-8
    import os
    from typing import Dict, List
     
    import tkinter as tk
     
    # Créez une fenêtre racine
    root = tk.Tk()
     
    # Créez un widget texte
    text = tk.Text(root, height=1, width=20)
    text.pack()
     
    # Insérez du texte dans le widget
    text.insert(tk.END, "Texte au-dessus du tableau")
     
     
    # Créez un widget Canvas avec une barre de défilement
    canvas = tk.Canvas(root, borderwidth=0, background="#ffffff")
    frame = tk.Frame(canvas, background="#ffffff")
    vsb = tk.Scrollbar(root, orient="vertical", command=canvas.yview)
    canvas.configure(yscrollcommand=vsb.set)
     
    # Placez le Canvas et la Scrollbar dans la fenêtre
    vsb.pack(side="right", fill="y")
    canvas.pack(side="left", fill="both", expand=True)
    canvas.create_window((4,4), window=frame, anchor="nw", tags="frame")
     
     
    # Créez 5 colonnes de cases à remplir
    columns = []
    for i in range(5):
        column = []
        for j in range(180):
            # Créez une case à remplir et ajoutez-la à la colonne en cours
            cell = tk.Entry(frame, width=10, justify=tk.CENTER)
            cell.grid(row=j, column=i)
            column.append(cell)
        # Ajoutez la colonne à la liste de colonnes
        columns.append(column)
     
    # Ouvrez le fichier texte et lisez chaque ligne
    with open("USA commande2.txt", "r") as f:
        lines = f.readlines()
     
    # Pour chaque ligne, remplissez les cases de chaque colonne avec les valeurs de la ligne
    for i, line in enumerate(lines):
        values = line.split()
        for j, value in enumerate(values):
            columns[j][i].insert(0, value)
     
     
    # Définissez une fonction de mise à jour de la zone affichée du Canvas
    def update_view(event):
        # Obtenez la hauteur de la zone affichée du Canvas
        canvas_height = event.height
        # Obtenez la hauteur totale du contenu du Canvas
        canvas_total_height = canvas.bbox("all")[3]
        # Obtenez les coordonnées y minimum et y maximum du contenu du Canvas
        # Obtenez les coordonnées y minimum et y maximum du contenu du Canvas
        y_min, y_max = canvas.yview()
        # Calculate the proportion of the visible area
        visible_proportion = (y_max - y_min) / (canvas_height / canvas_total_height)
        # Set the scroll region to match the visible area
        canvas.configure(scrollregion=(0, -canvas_height + canvas_total_height, 0, canvas_total_height))
        # Set the position of the vertical scrollbar
        vsb.set(event.x, event.x + visible_proportion)
     
     
    # Associez la fonction update_view à l'événement <Configure> du Canvas
    canvas.bind("<Configure>", update_view)
     
    # Exécutez la boucle principale de Tkinter
    root.mainloop()





    Merci de votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Ca se recherche avec les mots clefs tkinter frame scrollable.
    Pour trouver des codes comme celui-ci que vous devez comprendre avant de vous en inspirer (il doit même trainer un widget à utiliser sans trop se prendre le chou à comprendre comment il fonctionne).

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

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 32
    Par défaut
    Merci,
    je vais me pencher sur ça.

Discussions similaires

  1. [Python 3.X] Récupérer la hauteur d'un canvas
    Par paffou59 dans le forum Général Python
    Réponses: 4
    Dernier message: 07/08/2016, 18h05
  2. Hauteur totale variable d'une page externe
    Par rocket69 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/10/2009, 10h54
  3. Hauteur totale d'une page
    Par maxime115 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/04/2008, 19h34
  4. [JTable] Afficher la hauteur total du tableau ?
    Par n!co dans le forum Composants
    Réponses: 7
    Dernier message: 08/01/2007, 23h05
  5. [CSS][DIV] Hauteur totale
    Par Anduriel dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 12/06/2006, 17h11

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