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 :

ProgressBar dans CANVAS ('Progressbar' object has no attribute 'create_window')


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Février 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut ProgressBar dans CANVAS ('Progressbar' object has no attribute 'create_window')
    Bonjour messieurs-dames,

    Tout est dans le titre, je souhaite faire une IHM à l'aide de Python3.X et grâce à Canvas cependant lorsque je code je retombe sur cette erreur : 'Progressbar' object has no attribute 'create_window'

    Voici mon code pour plus de clarté.

    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
    from tkinter import *
    from tkinter import ttk
     
    root = Tk()
    root.geometry('800x480')
     
    w = Canvas(root, width=800, heigh=480)
    w.pack()
     
    bar = ttk.Progressbar(root, orient="vertical", mode='determinate')
    bar["value"] = 75
     
    bar.create_window(w, state='disabled')
    bar.pack()
     
    mainloop()
    Merci d'avance pour votre aide.

  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,

    Citation Envoyé par clemoldev Voir le message
    Tout est dans le titre, je souhaite faire une IHM à l'aide de Python3.X et grâce à Canvas cependant lorsque je code je retombe sur cette erreur : 'Progressbar' object has no attribute 'create_window'
    .create_window est une méthode du Canvas pas de Progressbar.
    Mais quel est l'intérêt d'avoir une Progressbar dans un Canvas? ou plutôt que cherchez vous à faire?

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Février 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je cherche à positionner mes ProgressBar, Jlabel et autres widgets car en utilisant les side=LEFT/RIGHT/TOP/BOTTOM j'arrive à les placer correctement mais lorsque je rajoute des JLabel, les JLabel se font écraser, décaler, supprimer...

  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
    Salut,

    Citation Envoyé par clemoldev Voir le message
    Je cherche à positionner mes ProgressBar, Jlabel et autres widgets car en utilisant les side=LEFT/RIGHT/TOP/BOTTOM j'arrive à les placer correctement mais lorsque je rajoute des JLabel, les JLabel se font écraser, décaler, supprimer...
    Je ne sais pas ce que sont des JLabel côté tkinter, ttk....
    Ceci dit avant d'essayer de contourner un éventuel problème, çà serait mieux de poster un petit exemple du problème constaté car il est probable qu'ils soient dus à une incompréhension...

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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Février 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Voici..

    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
    from tkinter import *
    from tkinter import ttk
     
    root = Tk()
     
    #Déclaration des Frame pour le positionnement des Widgets
    frameG = Frame(root)
    frameD = Frame(root)
    frameVitesse = Frame(root)
    frameTemp = Frame(frameG)
    frameKmh = Frame(frameD)
    frameReservoir = Frame(frameD)
     
     
    #Modification du style pour qu'il soit identique sur Windows et sur RASPBERRY
    style = ttk.Style()
    style.theme_use('alt')
    style.configure("green.Vertical.TProgressbar", foreground='#60bf19', background='#60bf19', thickness=50)
     
    #Déclaration des widgets...
    tempHuile = ttk.Progressbar(frameTemp, style="green.Vertical.TProgressbar", orient="vertical", length=200, mode="determinate")
    labelTemp = Label(frameTemp, text="°C", foreground='white', font=("Calibri",16), bg="blue")
    reservoir = ttk.Progressbar(frameReservoir, style="green.Vertical.TProgressbar", orient="vertical", length=200, mode="determinate")
    labelReservoir = Label(frameReservoir, text="Et glou...", font=("Calibri",16))
    bouton = Button(width=20, text='Quitter', command=frameG.quit)
    vitesse = StringVar()
    labelVitesse = Label(frameVitesse, textvariable=vitesse, font=("Calibri", 60))
    labelKmh = Label(frameKmh, text="km/h", font=("Calibri",16))
     
    #Insertion widget
    tempHuile.pack()
    labelTemp.pack()
    reservoir.pack()
    labelReservoir.pack()
    bouton.pack()
    labelVitesse.pack()
    labelKmh.pack()
     
    #Positionnement
    frameG.pack(side=LEFT)
    frameD.pack(side=RIGHT)
    frameTemp.pack(side=LEFT, padx=20)
    frameReservoir.pack(side=RIGHT, padx=20, pady=0)
    frameKmh.pack(side=LEFT, padx=0, pady=0)
    frameVitesse.pack()
     
     
    #pas de valeur min, necessite de faire une soustraction par rapport à la valeur reçu pour avoir un min à 40°
    tempHuile["maximum"]=130
    tempHuile["value"] = 100
     
    reservoir["value"] = 75
     
    vitesse.set("299")
     
    #Définition de la taille de la fenêtre.
    root.geometry("800x480")
     
    root.configure(bg="black")
    frameD.configure(bg="green")
     
     
    root.mainloop()
    Mon problème est si je code de cette manière, ma vitesse n'est pas centré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #Positionnement
    frameG.pack(side=LEFT)
    frameD.pack(side=RIGHT)
    frameTemp.pack(side=LEFT, padx=20)
    frameReservoir.pack(side=RIGHT, padx=20, pady=0)
    frameKmh.pack(side=LEFT, padx=0, pady=0)
    frameVitesse.pack()
    Alors que si je position mon frameVitesse.pack() en premier c'est mes progressBar qui vont être redimensionner.

  6. #6
    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,

    Lorsque vous créez une Frame, c'est pour y disposer un certain nombre de widgets facilement via .grid ou .pack. Une fois cette Frame construite, vous allez pouvoir fabriquer une autre Frame avec dedans son tas de widgets bien rangés....
    Si vous voulez "voir" que vos différentes frames ont le rendu visuel que vous attendez, vous encapsulez la création de chaque Frame et des widgets qu'elle contient dans une fonction (comme çà vous pourrez "tester" un puis l'autre).
    A la fin, vous pourrez disposer vos différentes frames dans une même fenêtre via .grid ou .pack.

    Et si vous ne construisez pas les choses pas à pas, non seulement vous serez perdu mais pas grand monde prendra le temps de comprendre ce que vous cherchez à faire (à moins de prendre un papier et un crayon et d'essayer de dessiner tout çà... mais faut pas rêver).

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

Discussions similaires

  1. 'module' object has no attribute 'maketrans'
    Par julien.63 dans le forum Général Python
    Réponses: 3
    Dernier message: 16/05/2009, 20h48
  2. Ftp : 'str' object has no attribute 'read'
    Par noquioz dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 02/01/2009, 15h46
  3. x object has no attribute y (PyQ4t et QLineEdit)
    Par EricStib dans le forum PyQt
    Réponses: 9
    Dernier message: 23/10/2008, 23h00
  4. Probleme : AttributeError: 'tuple' object has no attribute
    Par MrGecko dans le forum Général Python
    Réponses: 1
    Dernier message: 27/05/2007, 09h59
  5. Réponses: 2
    Dernier message: 26/05/2006, 14h48

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