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 :

scrollbar frame impossible à trouver


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 18
    Points : 6
    Points
    6
    Par défaut scrollbar frame impossible à trouver
    Bonjour,
    Je suis en train de créer un code pour faire du post-processsing sur des données contenues dans des fichiers .txt.
    J'ai créé une listbox qui trouve tous les dossiers présents dans un dossier mère appelé "data" et quand j'appuie sur ok je peux rechercher chaque fichier.
    Le problème est que si j'ai beaucoup de fichier à ouvrir, ma fenêtre est trop petite pour tout voir. Donc j'ai voulu mettre un scrollbar. Sauf que avec mon code, j'arrive à tout faire mais il n'y a pas de scrollbar (impossible de la trouver).
    Est-ce que quelqu'un peut me dire ce qui ne va pas dans mon code?
    Merci d'avance,

    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
    from tkinter import *
    from functools import partial
     
    def show_selection(label, choices, listbox):
        choices = choices.get()
        for index in listbox.curselection():
            Button(root, text = choices[index], command = fermeture(index)).grid()
     
     
     
    root = Tk()
    root.title("Post-processing")
    root.geometry("1440x900")
     
     
     
    frame_canvas = Frame(root)
    frame_canvas.grid(row=2, column=0, pady=(5, 0), sticky='nw')
    frame_canvas.grid_rowconfigure(0, weight=1)
    frame_canvas.grid_columnconfigure(0, weight=1)
     
    frame_canvas.grid_propagate(False)
     
     
    metadataframe = Canvas(frame_canvas, bg="yellow")
    metadataframe.grid(row=0, column=0, sticky="news")
     
     
    vsb = Scrollbar(frame_canvas, orient="vertical", command=metadataframe.yview)
    vsb.grid(row=0, column=1, sticky='ns')
    metadataframe.configure(yscrollcommand=vsb.set)
     
     
    metadataframe.config(scrollregion=metadataframe.bbox("all"))
     
    choices = Variable(root, directorylist)
    listbox = Listbox(root, listvariable=choices, selectmode="multiple")
    listbox.insert('end')
    label = Label(root, text='')
    button = Button(root, text='Ok', command=partial(show_selection, label, choices, listbox))
     
    listbox.grid(row=0, column=0)
    button.grid(row=1, column=0)
    label.grid(row=2, column=0)
     
     
    root.mainloop()

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Salut,

    Je dirais qu'il y a plein de choses qui ne vont pas ne serait-ce que parce que vous ne comprenez pas trop ce qu'il se passe. Sinon mettez en commentaire l'instruction frame_canvas.grid_propagate(False), vous devriez voir des choses.

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

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Je dirais qu'il y a plein de choses qui ne vont pas ne serait-ce que parce que vous ne comprenez pas trop ce qu'il se passe. Sinon mettez en commentaire l'instruction frame_canvas.grid_propagate(False), vous devriez voir des choses.

    - W
    Effectivement je ne comprends pas... Ca fait 3 jours que je cherche désespérément à faire mon code et que je ne trouve pas ce qui m'aide sur internet. J'ai beau y réfléchir je ne comprends pas comment faire.

    Après beaucoup de recherche je pense que le plus "joli" pour mon code serait d'avoir une figure en trois parties :
    - une premiere où choisir les dossiers (avec une listbox comme j'ai déjà fait)
    - une deuxième à droite de la première qui contient les fichier charges (et donc avec une scrollbar)
    - une troisième qui prendrait toute la partie inférieure de la fenètre et qui comporterait des onglets ayant chacun un fichier

    Sauf que le problème c'est que je n'arrive même pas à séparer ma figure en trois parties et je n'arrive pas à mettre une scrollbar que dans un seul frame.
    Est-ce que cela est au moins possible?

    Je sais que mes questions peuvent paraitre facile mais je débute en python
    Merci d'avance,

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Citation Envoyé par alizeL Voir le message
    Je sais que mes questions peuvent paraitre facile mais je débute en python
    Si vous débutez, il faut commencer par écrire des choses simples.
    Un code comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import tkinter as tk
     
    root = tk.Tk()
    f1 = tk.Frame(root, width=100, height=100, bg='green')
    f2 = tk.Frame(root, width=100, height=100, bg='blue')
    f3 = tk.Frame(root, width=200, height=100, bg='grey')
    f1.grid(row=0, column=0)
    f2.grid(row=0, column=1)
    f3.grid(row=1, column=0, columnspan=2)
    tk.mainloop()
    dispose juste 3 "Frame" sur l'écran...

    Rien ne vous empêche d'avoir dans f1 une Listbox, dans f2 un Canvas avec une Scrollbar et dans f3 un Notebook....
    Mais il faut adresser chaque difficulté indépendamment plutôt que d'essayer de tout faire en même temps et ne plus s'y retrouver.

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

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Si vous débutez, il faut commencer par écrire des choses simples.
    Un code comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import tkinter as tk
     
    root = tk.Tk()
    f1 = tk.Frame(root, width=100, height=100, bg='green')
    f2 = tk.Frame(root, width=100, height=100, bg='blue')
    f3 = tk.Frame(root, width=200, height=100, bg='grey')
    f1.grid(row=0, column=0)
    f2.grid(row=0, column=1)
    f3.grid(row=1, column=0, columnspan=2)
    tk.mainloop()
    dispose juste 3 "Frame" sur l'écran...

    Rien ne vous empêche d'avoir dans f1 une Listbox, dans f2 un Canvas avec une Scrollbar et dans f3 un Notebook....
    Mais il faut adresser chaque difficulté indépendamment plutôt que d'essayer de tout faire en même temps et ne plus s'y retrouver.

    - W
    Merci beaucoup

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J'ai repris tout mon code pour le simplifier et ne pas partir dans tous les sens.
    Ca fonctionne plutot bien. Néanmoins j'ai toujours un problème avec ma scrollbar. Elle apparait, bouge mais ne fait pas bouger le canvas associé avec elle.
    J'ai essayé de mettre la fonction update_idletasks() sur le canvas mais ça ne fait rien.
    Je n'arrive pas à comprendre pourquoi.
    Merci de m'aider encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    canvas=Canvas(f2,bg='blue',width=2*width/3, height=height/3,scrollregion=(0,0,2000,2000))
     
    hbar=Scrollbar(f2,orient=HORIZONTAL)
    hbar.pack(side=BOTTOM,fill=X)
    hbar.config(command=canvas.xview)
     
    vbar=Scrollbar(f2,orient=VERTICAL)
    vbar.pack(side=RIGHT,fill=Y)
    vbar.config(command=canvas.yview)
     
    canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set)
     
    canvas.pack(side=LEFT,expand=True,fill=BOTH)

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Citation Envoyé par alizeL Voir le message
    Néanmoins j'ai toujours un problème avec ma scrollbar. Elle apparait, bouge mais ne fait pas bouger le canvas associé avec elle.
    Ce n'est pas le Canvas qui bouge mais la portion du carré 0x2000, 0x2000 que vous lui demandez d'afficher dans un espace plus réduit. Je n'ai pas testé votre code mais, si vous ne créez rien dans le canvas, la seule chose qui bougera, c'est le fond "blue" et visuellement, pas étonnant que rien ne bouge.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/11/2009, 09h46
  2. Réponses: 5
    Dernier message: 25/06/2009, 10h30
  3. requete de débutant mais impossible à trouver
    Par yvan.chambault dans le forum Langage SQL
    Réponses: 8
    Dernier message: 06/05/2008, 14h44
  4. Impossible trouver la classe Shell_TrayWnd
    Par Wi-Fi dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 07/09/2007, 08h52
  5. Impossible trouver Servlet 2.4 implémentat°
    Par Mynautor dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 22/01/2007, 11h34

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