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 :

Problème avec Grid_location() dans Frame


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    france
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : france

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut Problème avec Grid_location() dans Frame
    Bonjour,

    Je débute en python.

    mon soucie concerne Grid_location(), hormis avec self.window ou je n'ai pas erreur, mais des que j'essaye de pointer une frame précise dans self, j ai une erreur.
    je n'utilise que .grid pour le positionnement dans toutes les Frame

    Code qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        def click(self,event):
     
            x = self.window.winfo_rootx()
            y = self.window.winfo_rooty()
            z = self.window.grid_location(x, y)
            messagebox.showinfo(z)
    Mon but final est de pointer sur une frame qui se trouve dans un ttk.notebook
    Self.window > Frame1 > Notebook > frame2

    merci d'avance pour votre aide

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

    Citation Envoyé par lancel0t Voir le message
    mon soucie concerne Grid_location(), hormis avec self.window ou je n'ai pas erreur, mais des que j'essaye de pointer une frame précise dans self, j ai une erreur.
    .grid_location va retourner les indices row/column de la grille correspondant à (x, y).
    Après pour passer de la au widget correspondant, il y a encore des indirections à faire.

    Citation Envoyé par lancel0t Voir le message
    Mon but final est de pointer sur une frame qui se trouve dans un ttk.notebook Self.window > Frame1 > Notebook > frame2
    pointer? je ne comprends pas trop ce que çà veut dire puisqu'à priori vous cliquez pour déclencher un event qui devrait récupérer le widget correspondant dans event.widget.

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

  3. #3
    Membre du Club
    Homme Profil pro
    france
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : france

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Merci pour ce retour rapide wiztricks

    Quand je dis pointer,

    je cherche a récupérer les informations qui se trouve sur la Frame2 dans mon exemple d'arborescence du premier post

    dans mon application , f1 c est ma Frame2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        def click(self,event):
     
            x = self.f1.winfo_rootx()
            y = self.f1.winfo_rooty()
            z = self.f1.grid_location(x, y)
            messagebox.showinfo(z)


    mon erreur :

    x = self.f1.winfo_rootx()
    AttributeError: 'Fullscreen_Example' object has no attribute 'f1'
    Fullscreen_Example etant ma Class

    vous parlez d'indirection, auriez vous un exemple concret ?

    merci

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par lancel0t Voir le message
    mon erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x = self.f1.winfo_rootx()
    AttributeError: 'Fullscreen_Example' object has no attribute 'f1'
    L'erreur dit juste que l'attribut f1 n'existe pas.
    Ce qu'on sait normalement gérer lorsqu'on programme avec les classes.

    Citation Envoyé par lancel0t Voir le message
    vous parlez d'indirection, auriez vous un exemple concret ?
    Après avoir récupérer row, column, vous pouvez récupérer le widget correspondant avec .grid_slaves.

    Pour le reste, lorsque vous expliquerez ce que vous cherchez à faire avec un petit exemple qui montre comment vous avez essayé de le réaliser, je pourrais peut être comprendre comment vous aider...

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

  5. #5
    Membre du Club
    Homme Profil pro
    france
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : france

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    L'erreur dit juste que l'attribut f1 n'existe pas.
    Ce qu'on sait normalement gérer lorsqu'on programme avec les classes.



    Après avoir récupérer row, column, vous pouvez récupérer le widget correspondant avec .grid_slaves.

    Pour le reste, lorsque vous expliquerez ce que vous cherchez à faire avec un petit exemple qui montre comment vous avez essayé de le réaliser, je pourrais peut être comprendre comment vous aider...

    - W
    voici mon code

    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
    from tkinter import *
    import tkinter as tk
    from tkinter import ttk
    from tkinter import messagebox
     
     
     
     
     
    class Exemple:
        def __init__(self):
     
            self.window = tk.Tk()
            self.window.bind("<Button-1>", self.click)
            self.console()
            self.window.mainloop()
     
        def click(self,event):
     
            x = self.f1.winfo_rootx()
            y = self.f1.winfo_rooty()
            z = self.f1.grid_location(x, y)
            messagebox.showinfo(z)
     
     
     
     
        def console(self):
            #Fichier_etalonnage_serveau = open("configuration.txt", "r")
     
            Frame_Calibration = Frame(self.window, borderwidth=2)
            Frame_Calibration .grid(row=0,column=0)
     
            style = ttk.Style(Frame_Calibration)
            style.configure("lefttab.TNotebook", tabposition="nw", background='blue', foreground='green')
            notebook = ttk.Notebook(Frame_Calibration, style="lefttab.TNotebook")
            f1 = Frame(notebook,  width=200, height=200) #, bg='light grey')
            f2 = Frame(notebook, width=200, height=200)  #, bg='light grey')
            notebook.add(f1, text="Frame 1")
            notebook.add(f2, text="Frame 2")
            notebook.grid(row=0, column=0, sticky="nw")
     
            canvas_serveau_titre = Canvas(f1,height=13 ,background='light grey')
            txt = canvas_serveau_titre.create_text(5, 2, text="Case 1", font="Arial 8", fill="black", anchor='nw')
            canvas_serveau_titre.grid(sticky="W", row=0, column=0)
     
            canvas_serveau_titre = Canvas(f1,height=13 ,width="42",background='light grey')
            txt = canvas_serveau_titre.create_text(7, 2, text= "Case 2", font="Arial 8", fill="black", anchor='nw')
            canvas_serveau_titre.grid( row=0, column=2)
     
    Exemple()
    je veux récupérer les emplacement de la case 1 et de la case 2 en cliquant dessus.

    juste par hazard, j arrive pas a retirer le quadrillage qui entour mes case, une idée ?

    merci

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

    Ligne 37, écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.f1 = f1 = Frame(notebook,  width=200, height=200) #, bg='light grey')
    Pour le reste, tkinter et les classes sont abordés dans les tutos avec des exercices corrigés.

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

  7. #7
    Membre du Club
    Homme Profil pro
    france
    Inscrit en
    Juillet 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : france

    Informations forums :
    Inscription : Juillet 2016
    Messages : 8
    Par défaut
    Citation Envoyé par lancel0t Voir le message


    juste par hazard, j arrive pas a retirer le quadrillage qui entour mes case, une idée ?

    merci
    j ai trouvé

    a rajouter dans votre déclaration de label qui sera dans la grid()

Discussions similaires

  1. Problème avec image dans JPanel
    Par littleshrimp dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 14/05/2006, 14h05
  2. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 15h50
  3. Problème avec Between dans un code
    Par Sendo dans le forum Access
    Réponses: 4
    Dernier message: 02/10/2005, 18h44
  4. problème avec graphique dans état access
    Par petitmic dans le forum Access
    Réponses: 5
    Dernier message: 07/09/2005, 14h55
  5. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19

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