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 :

Probleme de widget 'Parent'


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Probleme de widget 'Parent'
    Bonjour à tous
    J’essaye de comprendre pourquoi ma classe ci dessous ne me met pas dans les bonnes frames mes widgets, j'ai beau essayer de rajouter des self dans tous les sens, changer le constructeur de ma classe, ... Mais rien ne fonctionne

    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
    from tkinter import *
     
    #class 
     
    class AirportGUI(Tk):
     
    	def __init__(self):
    		self.root = Tk.__init__(self)
    		self.title('Airport Gesture')
    		self.timeFrame()
    		self.colorFrame()
    		self.arrivalsFrame()
    		self.departuresFrame()
     
    	def timeFrame(self):
    		Canvas(self, width = 600, height = 150, bg = 'white', relief=SUNKEN).\
    			grid(row=1, column=1, rowspan=3, columnspan=6, pady=15, padx=15)
     
    	def colorFrame(self):
    		self.c = Frame(self.root, width = 400, height = 150, bg = 'white').\
    			grid(row=1, column=7, rowspan=3, columnspan=4, pady=15, padx=15)
    		label1 = Label(self.c, text='Colors')
    		label1.grid()
    		Scale(self.c, length = 250).grid()
     
     
     
    	def arrivalsFrame(self):
    		Frame(self, width = 500, height = 650, bg = 'white').\
    			grid(row=4, column=1, columnspan=5, rowspan=13, pady=15, padx=15)
     
    	def departuresFrame(self):
    		Frame(self, width = 500, height = 650, bg = 'white').\
    			grid(row=4, column=6, columnspan=5, rowspan=13, pady=15, padx=15)
     
    AirportGUI().mainloop()
    Ce code n'indique aucune erreur mais place les widgets 'label' et 'scale' hors de la frame dans laquelle je voudrais les placer, et pourtant je leur ai bien indiqué en premier argument le widget parent dans lequel ils devraient se situer !
    J'espère que vous pourrez m'aider

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bon j'ai trouve le problème pour ceux qui rechercheraient aussi la solution :
    Etant donné que j'ai fait une instanciation de la frame via via un nom de variable, la methode '.grid()' doit se faire sur une ligne séparée sinn la variable pointe vers l'adresse du 'grid' et non vers la frame !

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tu restes malgré tout avec un soucis, self.root est None parce que c'est toujours le retour de __init__().

    Tant que tu n'as pas besoin de ce self.root c'est sans importance, mais je vois que tu l'utilises comme parent d'une frame.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci bcp pr ta réponse aussi rapide !
    en effet ce code avait qques bug :p celui que j'ai mnt donne ca
    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
    from tkinter import *
     
    #class 
     
    class AirportGUI(Tk):
     
    	def __init__(self):
    		Tk.__init__(self)
    		self.title('Airport Gesture')
    		self.timeFrame()
    		self.colorFrame()
    		self.arrivalsFrame()
    		self.departuresFrame()
    		self.configure(bg='black')
     
    	def timeFrame(self):
    		Frame(self, width = 600, height = 150, bg = 'white', relief=SUNKEN).\
    			grid(row=1, column=1, rowspan=3, columnspan=6, pady=15, padx=15)
     
    	def colorFrame(self):
    		self.c = Canvas(self, width = 400, height = 150, bg = 'white')
    		self.c.grid(row=1, column=7, rowspan=3, columnspan=4, pady=15, padx=15)
    		Scale(self.c).pack()
    		self.c.configure(bg='white', width = 400, height = 150)
     
     
     
    	def arrivalsFrame(self):
    		self.a = Frame(self, width = 500, height = 650, bg = 'white')
    		self.a.grid(row=4, column=1, columnspan=5, rowspan=13, pady=15, padx=15)
    		Label(self.a, text='Colors', bg='white').grid()
     
    	def departuresFrame(self):
    		Frame(self, width = 500, height = 650, bg = 'white').\
    			grid(row=4, column=6, columnspan=5, rowspan=13, pady=15, padx=15)
     
    AirportGUI().mainloop()
    Mais j'ai un autre problème mnt !
    J'ai crée 4 frames(fond blanc) dans la fenêtre principale (fond noir, la couleur des fonds sont pour bien distinguer la différence pour le moment).
    Jusque là, aucun problème, je les ai bien placées comme je veux avec la méthode '.grid()'. Le problème vient dès que j'insère un widget dedans (ex: un Scale ou un Label), ce widget se met bien dans la bonne frame mais retire sa couleur de fond et change sa taille.
    voila une capture d'écran pr plus de clarte : Nom : part3_apres.PNG
Affichages : 102
Taille : 66,6 Ko
    Alors que sans les widgets scale et label, ca donne ca : Nom : Part3_avant.PNG
Affichages : 133
Taille : 74,8 Ko

  5. #5
    Membre régulier Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 119
    Points
    119
    Par défaut
    Essaye l'option sticky, je pense qu'elle devrait te convenir. Par exemple dans arrivalsFrame ajoute : self.a.grid(sticky=NSEW, ...). Tu obliges ainsi le conteneur à "coller" sur les 4 bords de la cellule.

    Mais je ne pense pas que les dimensions de hauteur et largeur que tu indiques seront prises en compte par grid. Il me semble que les méthodes pack et grid redimensionnent le conteneur frame en fonction des widgets qu'il contient. Ils font pareil pour canvas si tu l'utilises comme un conteneur. Je pense que ce n'est pas une bonne pratique d'imposer les dimensions de frame, ni d'utiliser canvas comme un conteneur. Mais je peux me tromper.
    Pierre
    Je travaille avec Word 2019 sous Windows 10

Discussions similaires

  1. VB6 / access, probleme lien de parenté
    Par Bartjobe dans le forum VBA Access
    Réponses: 2
    Dernier message: 10/11/2010, 07h32
  2. [Web] Probleme de contrôle parental
    Par moumine dans le forum Windows Vista
    Réponses: 15
    Dernier message: 08/12/2008, 23h59
  3. Probleme installation widget
    Par sneb5757 dans le forum Windows Vista
    Réponses: 0
    Dernier message: 31/08/2007, 23h22
  4. Probleme avec widget Text
    Par will97 dans le forum Tkinter
    Réponses: 4
    Dernier message: 16/03/2007, 21h58
  5. [Swt]Prendre toute la place du Widget Parent ?
    Par kedare dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 17/03/2006, 15h45

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