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 :

Tkinter deuxième fenêtre et placement


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Tkinter deuxième fenêtre et placement
    Bonjour, vous allez bien ?
    j'ai une question à vous poser !
    Alors :
    1) Je suis débutant en Python et j'essaie de créer un "simulateur" ( stage ) depuis une semaine mais je suis bloqué sur deux points:
    La première, j'essaie de mettre 4 boutons alignés en bas au centre de l'écran. j'ai essayé de les mettre en haut pour débuter mais les points sont posé verticalement et quand j'arrive à les mettres à gauche et à droite, c'est vertical ( ce qui est logique ), du coup, j'aimerais savoir comment les mettre au centre et en bas de la page ! ( j'ai essayé de faire un frame mais sans succès, rien a changé )

    2) Alors, dans le code , j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def command(): 
        Toplevel(Test)
     
    bouton = Button(Test, text="Play", command = command) 
    bouton.pack(side="left")
    Il m'a bien ouvert une deuxième fenêtre ! mais moi, j'aimerais ( déja agrandir la fenetre ) et executer un autre programme dedans !
    Par exemple, j'ai un programme tout prêt et j'aimerais voir le programme dans cette fenetre ! ( quand j'appuie sur "run" en general, cela ouvre une fenetre avec le contenu )
    Si j'avais vous n'avez pas trop bien compris, voici les images ! ( j'aimerais mettre les graphiques ( que j'ai fait apparaitre en "run" un autre programme ) dans la fenetre Toplevel

    Merci d'avance

    jeffo2
    P.S: j'ai essayé de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import os
    os.system('python demo_mfl_many_tx_v1.py')
    mais cela m'affiche ça... Sans les graphiques ( voir dernière image ) et moi je veux voir ça ( avant dernière image )

    Nom : 1.png
Affichages : 3827
Taille : 59,6 KoNom : 2.png
Affichages : 2223
Taille : 17,0 KoNom : 3.png
Affichages : 2249
Taille : 18,9 KoNom : 4.png
Affichages : 2412
Taille : 61,3 Ko
    Nom : 5.png
Affichages : 2399
Taille : 68,7 Ko

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

    Citation Envoyé par jeffo2 Voir le message
    La première, j'essaie de mettre 4 boutons alignés en bas au centre de l'écran.
    Vous devez apprendre 2 choses:
    • faire un croquis de ce que vous voulez voir apparaître sur l'écran,
    • et imaginer comment vous allez bien pouvoir découper tout çà en Frame où les widgets seront alignés via pack ou en tableau via grid.

    4 boutons alignés en bas de l'écran c'est 2 Frames: le haut et le bas de l'écran, la frame du bas contenant 4 widgets alignés horizontalement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import tkinter as tk
     
    root = tk.Tk()
    root.configure(bg='blue')
    tk.Frame(root, width=400, height=400, bg='grey').pack()
    f = tk.Frame(root)
    for c in 'ABCD':
        tk.Label(f, text=c).pack(side='left')
    f.pack()
    tk.mainloop()
    C'est pas plus difficile que construire un LEGO mais il faut avoir pris le temps d'apprendre les règles du jeu et d'un peu de pratique.

    Citation Envoyé par jeffo2 Voir le message
    Il m'a bien ouvert une deuxième fenêtre ! mais moi, j'aimerais ( déja agrandir la fenetre ) et executer un autre programme dedans !
    Ça c'est compliqué car il faut pouvoir dire au programme "je veux que tu utilises cette fenêtre" et que ce dernier sache qu'en faire.
    Par contre, un programme, est un ensemble de fonctions dont une est le point d'entrée généralement la fonction main(...) (à créer si elle n'existe pas). Et si ce programme est un script Python, on pourra y accéder via "import" (plutôt que le lancer via "run").... Et faire que main ait un paramètre optionnel window qui permettra de passer la Toplevel qu'il devra utiliser.

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

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci de ta réponse !
    Tout d'abord, j'ai trouvé comment lancer le programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec(open("./demo_mfl_many_tx_v1.py").read())
    cela me le lance !
    Quand j'essaye avec import il me trouve toujours des erreurs :'( est-ce grave si je le laisse comme ça ? car je veux que mes graphiques par seconde apparaissent :'(

    Et aussi une question ! :
    dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import tkinter as tk
     
    root = tk.Tk()
    root.configure(bg='blue')
    tk.Frame(root, width=400, height=400, bg='grey').pack()
    f = tk.Frame(root)
    for c in 'ABCD':
        tk.Label(f, text=c).pack(side='left')
    f.pack()
    tk.mainloop()
    comment faîtes-vous pour savoir ou aller précisément ?
    exemple, dans mon cas, je dois placer 4 boutons en bas/milieu de l'écran
    J'ai essayé de faire un frame, quand je l'ai lancé, sans succès... :'(

    merci d'avance !

    Jeffo2
    EDIT : je n'arrive pas à inserer l'image donc voici le 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
    import tkinter as tk
    from tkinter import *
    root = tk.Tk()
    root.configure()
    root.wm_state(newstate="zoomed")
    tk.Frame(root, width=650, height=650).pack()
    f = tk.Frame(root)
    for c in ' ':
        tk.Label(f, text=c).pack(side='left')
    def command(): 
        Toplevel(root)
     
    bouton = Button(root, text="Play", command = command) 
    bouton.pack()
     
    textBouton2 = " Pause "
    commandeBouton2 = root.quit
    bouton = Button (root, text = textBouton2, command = commandeBouton2)
    bouton.pack()
     
    textBouton3 = " Resume "
    commandeBouton3 = root.quit
    bouton = Button (root, text = textBouton3, command = commandeBouton3)
    bouton.pack()
     
    textBouton4 = " Clear "
    commandeBouton4 = root.quit
    bouton = Button (root, text = textBouton4, command = commandeBouton4)
    bouton.pack()
    f.pack()
    tk.mainloop()
    normalement, quand on appuie sur play, cela ouvre la fenetre

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

    Citation Envoyé par jeffo2 Voir le message
    comment faîtes-vous pour savoir ou aller précisément ?
    Je sais parce que j'ai lu la documentation de "pack" et que j'ai l'expérience de faire des choses avec. Imaginez que tkinter soit une langue. Si vous ne savez dire que "bonjour", "comment çà va", "moi c'est John"... impossible, d'exprimer des choses compliquées avec. Et vous ne pourrez prétendre bien parler une langue que si vous êtes capable de penser directement avec (plutôt que de penser en français puis de traduire en...).

    Ok tkinter est plus facile qu'une langue étrangère, mais il faut quand même prendre le temps de penser avec.

    Bonjour et merci de ta réponse !

    Citation Envoyé par jeffo2 Voir le message
    '( est-ce grave si je le laisse comme ça ? car je veux que mes graphiques par seconde apparaissent :'(
    Si votre objectif est d'avoir un code qui fonctionne rapidement sans trop comprendre pourquoi...
    Mais si vous avez besoin d'aide et que vous postez ce genre de chose dans un forum, vous allez juste recevoir une volée de bois vert vous indiquant qu'il y a des tutos pour apprendre à programmer.

    Citation Envoyé par jeffo2 Voir le message
    exemple, dans mon cas, je dois placer 4 boutons en bas/milieu de l'écran
    J'ai essayé de faire un frame, quand je l'ai lancé, sans succès... :'(
    Si vous ne comprenez pas comment fonctionne "pack", vous ne saurez pas vous en servir.
    (et vous avez de la documentation et des tutos. à votre disposition pour "apprendre" qui est préalable à "comprendre"... Sûr que si vous êtes pressé, çà prend du temps... mais vous n'avez pas trop le choix).

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

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci de ta réponse !
    C'est bon, j'ai compris pour pack, grid and place !
    Voici le code que j'ai lancé !
    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
    import tkinter
    import numpy as np  
     
    from tkinter import *
    Test = Tk()
     
    Test.title(" Simulation ")
    textLabel = "Simulation."
    etiquette = Label (Test, text = textLabel, fg = "Black")
    etiquette.pack(side="top")
    Test.iconbitmap("Huawei.ico")
    Test.wm_state(newstate="zoomed")
     
    frame = Frame(Test)
     
    def command(): 
        Toplevel(Test)   
    bouton = Button(Test, text="Play", command = command) 
    bouton.place(x=680, y= 700, width=50, height=25)
     
    textBouton2 = " Pause "
    commandeBouton2 = Test.quit
    bouton2 = Button (Test, text = textBouton2, command = commandeBouton2)
    bouton2.place(x=740, y= 700, width=50, height=25)
     
    textBouton3 = " Resume "
    commandeBouton3 = Test.quit
    bouton3 = Button (Test, text = textBouton3, command = commandeBouton3)
    bouton3.place(x=800, y= 700, width=50, height=25)     
     
    textBouton4 = " Clear "
    commandeBouton4 = Test.quit
    bouton4 = Button (Test, text = textBouton4, command = commandeBouton4)
    bouton4.place(x=860, y= 700, width=50, height=25)
     
    Test.mainloop()
    Test.destroy()
    C'est bon pour mes boutons merci !
    Par contre, je n'ai toujours pas compris et trouver comment modifier la fenetre Toplevel car je veux executer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec(open("./demo_mfl_many_tx_v1.py").read())
    dans la fenetre :'(
    J'ai regardé plein de solution dont celle la :
    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
    import tkinter
    from tkinter import *
     
    fenetre = Tk()
    fenetre.wm_state(newstate="zoomed")
    top = Toplevel(fenetre)
    def command(): 
        Toplevel(fenetre)   
    bouton = Button(fenetre, text="Play", command = command) 
    bouton.place(x=680, y= 700, width=50, height=25)
     
    print(top.geometry(), fenetre.geometry()) # Affiche 1x1+0+0 1x1+0+0
    top.geometry("{}x{}+{}+{}".format(600, 200, 400, 400))
     
    top.update()
     
    print(top.geometry()) # Affiche 300x100+400+400
    fenetre.mainloop()
    car d'après ce qu'ils disent, il fallait mettre à jour les parametres de Toplevel
    mais non, je ne trouve pas :'( auriez-vous une piste s'il vous plait ?

    merci d'avance. x)

    Jeffo2

    EDIT :
    ai essayé de faire ça pour modifier le toplevel maissans succès, cela fait hard bug Spyder :'( ( mon logiciel )
    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
    import tkinter
    import numpy as np  
     
    from tkinter import *
    Test = Tk()
     
    Test.title(" Simulation ")
    textLabel = "Simulation."
    etiquette = Label (Test, text = textLabel, fg = "Black")
    etiquette.pack(side="top")
    Test.iconbitmap("Huawei.ico")
    Test.wm_state(newstate="zoomed")
    #%%
    frame = Frame(Test)
     
    def command(): 
        Toplevel(Test)   
    bouton = Button(Test, text="Play", command = command) 
    bouton.place(x=680, y= 700, width=50, height=25)
     
    textBouton2 = " Pause "
    commandeBouton2 = Test.quit
    bouton2 = Button (Test, text = textBouton2, command = commandeBouton2)
    bouton2.place(x=740, y= 700, width=50, height=25)
     
    textBouton3 = " Resume "
    commandeBouton3 = Test.quit
    bouton3 = Button (Test, text = textBouton3, command = commandeBouton3)
    bouton3.place(x=800, y= 700, width=50, height=25)     
     
    textBouton4 = " Clear "
    commandeBouton4 = Test.quit
    bouton4 = Button (Test, text = textBouton4, command = commandeBouton4)
    bouton4.place(x=860, y= 700, width=50, height=25)
    #%%
     
    fenetre2 = Toplevel(Test)
    fenetre2.title("Simulation")
    fenetre2.wm_state(newstate="zoomed")
    fenetre2 ( exec(open("./demo_mfl_many_tx_v1.py").read()) )
    fenetre2.place(x=860, y= 700, width=50, height=25)
     
    #%%
    Test.mainloop()
    Test.destroy()

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 277
    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 277
    Points : 36 762
    Points
    36 762
    Par défaut
    Citation Envoyé par jeffo2 Voir le message
    auriez-vous une piste s'il vous plait ?
    Je vous ai donné des pistes dans la première réponse que j'ai faite: "import", un point d'entrée avec la fenêtre en paramètre.
    Après si vous voulez coder çà n'importe comment pourvu que çà marche... c'est votre choix. Mais pas grand monde vous suivra dans ce cul de sac.
    A vous de voir, vous vous formez et construisez des solutions un peu plus propres et intelligibles, ou vous continuez à patauger dans votre coin.

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

Discussions similaires

  1. coment afficher un champ dans une deuxiéme fenêtre.
    Par loic20h28 dans le forum WinDev
    Réponses: 2
    Dernier message: 03/03/2008, 14h36
  2. Deuxième fenêtre toujours devant?
    Par fd14 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 02/05/2007, 16h14
  3. [Lazarus][Débutant] Afficher une deuxième fenêtre
    Par 'ti programmeur dans le forum Lazarus
    Réponses: 6
    Dernier message: 12/02/2007, 22h06
  4. Création d'une deuxième fenêtre windows
    Par stabilo dans le forum MFC
    Réponses: 5
    Dernier message: 03/03/2006, 19h44
  5. [Tkinter] Plusieurs fenêtre avec Tkinter
    Par cyrpaut dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/01/2006, 22h24

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