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 :

Créer/Séparer un canvas et une zone "paramètre" dans une fenêtre Tkinter


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Créer/Séparer un canvas et une zone "paramètre" dans une fenêtre Tkinter
    Bonjour,

    j'essaye de créer un logiciel se présentant sous une forme assez simple. Sur le premier tier gauche de la fenêtre, il y a une zone "paramètre" où l'on pourra entrer différentes variables, etc. et sur les 2/3 suivants, il y a un canvas.
    Je cherche un moyen de créer ces deux entités, et de pouvoir les séparer et les arranger comme ci-dessus.
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    from tkinter import *
    from math import *
     
     
    """-------------------------"""
    """--------VARIABLES--------"""
    """-------------------------"""
     
    #PARAMETRES FONDAMENTAUX
    y_sol = 690
     
    #VARIABLES PHYSIQUES
    m = 20 #kilogrammes
    g = 9.81
    a = -g
    h = 70 #mètres
    y = 720 - h*10 #pixels (1 mètres = 10 pixels)
    dt = 0.01
    pas = 0.01
    v0 = 0
    t = 1
     
     
    """-------------------------"""
    """CONFIGURATION APPLICATION"""
    """-------------------------"""
     
    #CONFIG FENETRE
    bg_color = "#222222"
    window = Tk()
    window.title("Physicsim")
    window.geometry("1080x720")
    window.minsize(480, 360)
    #window.iconbitmap("logo.ico")
    window.config(background=bg_color)
     
    #CONFIG FRAMES
    simu_chute = LabelFrame(window, text="Hello")
    parameters = LabelFrame(window, text="Bye !")
    simu_chute.grid(row=0, column=0)
    parameters.grid(row=1, column=0)
     
    #CONFIG CANVAS
    canvas = Canvas(simu_chute, bg=bg_color)
    canvas.grid(row=0, column=4)
     
    #CONFIG MENUS
    menu_bar = Menu(window)
     
    file_menu = Menu(menu_bar, tearoff=0)
    file_menu.add_command(label="Fermer Physicsim", command=window.quit)
    menu_bar.add_cascade(label="Fichier", menu=file_menu)
     
    window.config(menu=menu_bar)
     
    #CREATION IMG
    img = PhotoImage(file="images/apple.png")
    photo = canvas.create_image(0, y, anchor=NW, image=img)
     
     
    """------------------------"""
    """-------SIMULATION-------"""
    """------------------------"""
    def chute_rectiligne(a,t,m,dt,y):
        while y < y_sol:
            y_relatif = -((a*t)/m)
            x_relatif = 0
            t += 1
            y += y_relatif
            canvas.move(photo, x_relatif, y_relatif)
            dt += pas
            canvas.update()
            canvas.after(1)
     
    #AFFICHER FENETRE
    window.mainloop()
    J'ai essayé avec des LabelFrame, soit c'est pas ça, soit je m'y suis mal pris...

    Auriez-vous une idée ?

    Merci,
    Phizik

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

    Si vous dites "Sur le premier tier gauche de la fenêtre, il y a une zone "paramètre" où l'on pourra entrer différentes variables, etc. et sur les 2/3 suivants, il y a un canvas.", le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    simu_chute.grid(row=0, column=0)
    parameters.grid(row=1, column=0)
    place les fenêtres l'une au dessus de l'autre (et pas à côté).

    Pour le reste, je sais pas: regardez ce qu'on peut faire avec les widgets ttk.

    - W

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord, merci pour votre réponse.

    Ensuite, j'ai déjà essayé ce que vous proposez, c'est à dire de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    simu_chute.grid(row=0, column=1)
    parameters.grid(row=0, column=0)
    Seulement, il ne se passe rien ! La frame simu_chute est collée sur la gauche et parameters est juste invisible (je ne vois pas le texte "Bye" seulement le "Hello" de simu_chute)...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 427
    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 427
    Points : 37 009
    Points
    37 009
    Par défaut
    Citation Envoyé par Phizik Voir le message
    Seulement, il ne se passe rien ! La frame simu_chute est collée sur la gauche et parameters est juste invisible (je ne vois pas le texte "Bye" seulement le "Hello" de simu_chute)...
    La différence entre les 2 est que dans la première vous afficher un Canvas qui donne à la fenêtre ses dimensions et que dans l'autre afficher rien équivaut à vide (et un truc invisible). Pour voir la 2ème fenêtre vous pouvez forcer la taille via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parameters = LabelFrame(window, text="Bye !", width=300, height=300)
    Je vous conseille de commencer par des exemples simples pour essayer de comprendre comment tout çà fonctionne car ce n'est pas intuitif: on sait ou on sait pas.

    - W

Discussions similaires

  1. [Python 3.X] Créer une fenêtre Tkinter
    Par mfr5167 dans le forum Tkinter
    Réponses: 4
    Dernier message: 17/05/2020, 21h30
  2. Raffraichir une fenêtre Tkinter
    Par MisterPython dans le forum Tkinter
    Réponses: 1
    Dernier message: 13/12/2014, 19h39
  3. Créer des graphismes 2D lorsque l'on est programmeur : fissure dans les fenêtres de bureau
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 22/10/2014, 20h55
  4. Problème pour l'ouverture d'une fenêtre tkinter
    Par Invité dans le forum Général Python
    Réponses: 9
    Dernier message: 11/04/2014, 13h44
  5. Réponses: 2
    Dernier message: 29/04/2010, 08h46

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