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 :

Associer une Scrollbar à un Frame ou à la fenêtre principale Tk


Sujet :

Tkinter Python

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 91
    Points
    91
    Par défaut Associer une Scrollbar à un Frame ou à la fenêtre principale Tk
    Bonjour, certains des utilisateurs du programme que je développe sont sur des ultraportable dont la résolution est inférieur (axe des Y) à l'interface de mon application. J'ai donc voulu ajouter une scrollbar pour qu'ils puissent accéder à la partie du bas de l'application.
    Après recherche, il semble que l'on ne puisse pas associer une scrollbar à un frame (qui contiendrait l'ensemble de l'interface) avec Tkinter seul. Ne pouvant pas utiliser PMW, je voudrais savoir si il y a un moyen d'avoir une scrollbar qui fasse défiler l'ensemble de mon interface juste en utilisant Tkinter?
    J'ai essayé d'intégrer mon interface dans un Canvas mais la barre de défilement ne joue pas sur l'interface. Si le canvas contient juste des dessins, cela fonctionne mais dès que l'on met un widget dans le canvas, la scrollbar n'a plus aucun effet.
    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Points : 388
    Points
    388
    Par défaut
    Bonjour,
    Voici un exemple. Je ne sais pas si on peut faire plus simple:
    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
    from Tkinter import *
     
    root = Tk()
    vsb = Scrollbar(root, orient=VERTICAL)
    vsb.grid(row=0, column=1, sticky=N+S)
    hsb = Scrollbar(root, orient=HORIZONTAL)
    hsb.grid(row=1, column=0, sticky=E+W)
    c = Canvas(root,yscrollcommand=vsb.set, xscrollcommand=hsb.set)
    c.grid(row=0, column=0, sticky="news")
    vsb.config(command=c.yview)
    hsb.config(command=c.xview)
    root.grid_rowconfigure(0, weight=1)
    root.grid_columnconfigure(0, weight=1)
    fr = Frame(c)
    #On ajoute des widgets :
    for i in range(0,26):
        row=i/8
        col=i%8
        Button(fr, width=10,height=2,text="%s" %(chr(i+65))).grid(row=row, column=col)
    c.create_window(0, 0,  window=fr)
    fr.update_idletasks()
    c.config(scrollregion=c.bbox("all"))
    root.mainloop()

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 91
    Points
    91
    Par défaut Parfait
    Merci beaucoup, en effet cela marche. J'ai pensé naïvement qu'en mettant un widget dans le canvas de la même manière que l'on met un widget dans un frame fonctionnerait. Ce n'était pas le cas. Je débute, donc j'en apprends toutes les deux lignes de codes...
    Il va falloir que je me penche sur les create_windows, ... qui n'est pas référencé dans mon bouquin et autres update idle... mais je trouverai bien. Je pense que je cerne un peu le fontionnement de tout ca.
    Merci encore!

  4. #4
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 91
    Points
    91
    Par défaut Questions pour que je comprenne...
    J'apprends tout seul donc un peu d'aide pour mes neurones n'est pas de refu... surtout parce que le langage précis du manuel de référence de Tk résonne comme du chinois pour moi.
    J'ai compris la démarche, seulement:
    A quoi sert exactement le .update_idletasks()? Je suppose que c'est à cause du .create_windows, mais je ne comprends pas la necessité (a part que cela ne marche pas si on ne le fait pas).
    Le frame créé est il absolument necessaire? Si oui pourquoi? ne peut on pas remplir directement le "fenetre" créée par create_windows?
    Désolé pour ces questions d'enfant de 5 ans, et pourquoi, et pourquoi... mais j'aime comprendre ce que je fais, et comme je vais utiliser ce magnifique petit bout de code...

  5. #5
    Membre averti
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Points : 388
    Points
    388
    Par défaut
    Bonjour,
    A quoi sert exactement le .update_idletasks()?
    A forcer le redimensionnement des widgets.
    Le frame créé est il absolument necessaire? Si oui pourquoi? ne peut on pas remplir directement le "fenetre" créée par create_windows?
    "create_window" créé un emplacement sur le Canvas pour y mettre un widget (la Frame).
    et comme je vais utiliser ce magnifique petit bout de code...
    Merci

  6. #6
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 91
    Points
    91
    Par défaut
    hem... comme je n'ai pas beaucoup grandi depuis la dernière fois:

    pourquoi faut il forcer le redimensionnement des widgets (lesquels en particulier, fr ou ceux qui seront contenus dans fr)?

    Promis, j'arrête là

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

Discussions similaires

  1. Associer une Scrollbar à des Boutons radio.
    Par nicolivier dans le forum Tkinter
    Réponses: 1
    Dernier message: 07/04/2013, 06h53
  2. Associer une fonction au bouton de fermeture d'une fenêtre
    Par rimy2mi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/09/2009, 09h02
  3. Associer une image avec une fenêtre
    Par matlemat44 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 16/10/2008, 21h11
  4. Associer une scrollbar à un Frame
    Par Ramoneur dans le forum Tkinter
    Réponses: 1
    Dernier message: 07/09/2007, 10h29
  5. une de mes frame disparail lorsque je rétréci la fenêtre...
    Par renofx1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 11/01/2006, 00h41

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