Comment modifier après coup une fenêtre python

Résolu/Fermé
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023 - 21 nov. 2022 à 18:46
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023 - 22 nov. 2022 à 07:38

Bonjour,

Je suis un codeur plus ou moins débutant en python. J'aurais aimé savoir si il était possible, et si oui, comment, de faire des modifications après coup sur une fenêtre python.

Autrement dit:

from tkinter import*
F = Tk()
F.title("yes")
F.mainloop()
F.title("no")
F.mainloop()

Sauf que ça ne marche pas. PS: j'ai pris l'exemple de title mais c'est pareil et je veux le même chose pour tout. Merci.
Android / Chrome 104.0.0.0

A voir également:

7 réponses

yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 Ambassadeur 1 557
21 nov. 2022 à 18:48

bonjour,

ajoute un print() après la ligne 4, cela t'aidera à comprendre ce qui se passe.

"après coup", c'est quand, en réalité?

0
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023
Modifié le 21 nov. 2022 à 18:55

Merci mais je met quoi entre les parenthèses ?

Après coup, c'est plus tard dans le code n'importe ou

Merci

0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 1 557
21 nov. 2022 à 19:00

par exemple print("après mainloop")

0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 1 557
21 nov. 2022 à 19:01

Ceci, alors:

from tkinter import*
F = Tk()
F.title("yes")
F.title("no")
F.mainloop()
0
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023
Modifié le 21 nov. 2022 à 19:03

Ok merci beaucoup mais du coup, si j'ai bien compris, des que la fenêtre va s'afficher, elle s'appellera no,non?

0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 1 557
21 nov. 2022 à 19:14

Tu n'as pas répondu à ma question : ""après coup", c'est quand, en réalité?".

Tu veux le faire par un bouton, après un délai, avant ou après que la fenêtre soit interactive?

0
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023
21 nov. 2022 à 19:19

Après un délai si possible (une fois que environ 5 secondes soit passées avec la fenêtre d'intro)

0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 1 557
21 nov. 2022 à 19:22
import tkinter
import time
F = tkinter.Tk()
F.title("yes")
F.update()
time.sleep(5)
F.title("no")
F.mainloop()
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023
21 nov. 2022 à 19:58

Ok merci infiniment,

Pr Witherfire

0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 1 557
21 nov. 2022 à 21:16

La fenêtre devient "interactive" après mainloop(), les boutons commenceront à fonctionner, par exemple.  Il existe d'autres techniques pour programmer des actions après l'appel à mainloop().

Merci, le moment venu, de marquer la discussion comme résolue.

0

Bonsoir.

Changer le contenu d'une fenêtre, c'est jouer avec les pack*, grid* et destroy.

Exemple avec 2 fonctions, une affichant une intro, l'autre le programme principal. On peut cliquer sur le texte pour passer au programme principal qui sera de toute façon lancé après 5 secondes.

import tkinter as tk

WIDTH = 800
HEIGHT = 600


def main_app_run(window, previous_frame=None):
    window.title("Principal - Ciquez sur le texte pour quitter")
    frame_main = tk.Frame(window, bg="blue", width=WIDTH, height=HEIGHT)
    frame_main.grid_propagate(0)
    frame_main.grid_columnconfigure(0, weight=1)
    frame_main.grid_rowconfigure(0, weight=1)
    label_app = tk.Label(
        frame_main,
        text="programme\nprincipal",
        bg="darkBlue",
        fg="lightBlue",
        font=("", 80),
    )
    label_app.grid()
    if previous_frame is not None:
        previous_frame.destroy()
    frame_main.grid(sticky=tk.NSEW)
    label_app.bind("<Button-1>", lambda evt: window.destroy())


def intro_app_run(window):
    window.title("Cliquez sur le texte !" )
    frame_intro = tk.Frame(window, bg="yellow", width=WIDTH, height=HEIGHT)
    frame_intro.grid(sticky=tk.NSEW)
    frame_intro.grid_propagate(0)
    frame_intro.grid_columnconfigure(0, weight=1)
    frame_intro.grid_rowconfigure(0, weight=1)
    label_intro = tk.Label(
        frame_intro, text="Introduction", bg="orange", fg="black", font=("", 64)
    )
    label_intro.grid()
    label_intro.bind("<Button-1>", lambda evt: main_app_run(window, frame_intro))
    frame_intro.after(5000, main_app_run, window, frame_intro)


window = tk.Tk()
intro_app_run(window)
window.mainloop()

Rien de bien compliqué ici, peut-être les fonctions nécessaires aux bons dimensionnements des frames. Bien évidemment ce n'est qu'un exemple, on peut à loisir changer le contenu des frames.

0
Pr.Witherfire Messages postés 79 Date d'inscription samedi 5 novembre 2022 Statut Membre Dernière intervention 25 février 2023
22 nov. 2022 à 07:38

Ok merci beaucoup

0