Je fais un projet scolaire. J'ai conçu une page d'accueil pour cela sur tkinter et mis un bouton `` ok '' qui, lorsqu'il est enfoncé, fait avancer le code mais la page d'accueil ne se ferme pas une fois pressée.
J'ai essayé de définir une autre fonction pour la fermer mais cela ne fonctionne pas .
welcome = Tk() okbutton = Button(welcome, text='ok', command=R) okbutton.pack() welcome.mainloop()
et le code avance mais la page d'accueil reste ouverte ... Existe-t-il une méthode pour résoudre ce problème?
3 Réponses :
Pour exécuter les deux commandes, appelez une commande à l'intérieur de l'autre (sonne comme si elle devrait être vers la fin) et assignez la première commande au bouton.
La fenêtre ne se ferme jamais automatiquement lorsque vous créez une nouvelle fenêtre. Vous devez utiliser welcome.destroy ()
pour cela. Vous pouvez l'exécuter dans la fonction qui crée une nouvelle fenêtre.
import tkinter as tk def welcome_page(): global welcome welcome = tk.Tk() tk.Label(welcome, text='Welcome').pack() button = tk.Button(welcome, text='OK', command=other_page) button.pack() welcome.mainloop() def other_page(): global welcome global other welcome.destroy() # close previous window other = tk.Tk() tk.Label(other, text='Other').pack() button = tk.Button(other, text='OK', command=end) button.pack() welcome.mainloop() def end(): global other other.destroy() # close previous window welcome_page()
Un bouton ne peut appeler qu'une seule fonction, mais cette seule fonction peut faire tout ce que vous voulez.
def do_ok(): print("hello!") welcome.destroy() welcome = Tk() okbutton = Button(welcome, text='ok', command=do_ok) okbutton.pack() welcome.mainloop()
Pouvez-vous publier tout votre code? Cela nous aidera à vous aider plus rapidement :)
C'est en fait un projet donc le code entier fait environ 900 lignes ... je vais laisser le lien github ici github.com/RohanSreelesh/School_Project_CRM/blob/master/...
Je vois une grosse erreur dans le code - vous utilisez plusieurs fois
Tk
etmainloop. Vous devez utiliser
Tk` pour créer uniquement la fenêtre principale. Pour les autres fenêtres, utilisezToplevel
. Et le programme ne doit utiliser qu'un seulmailoop
.les fenêtres ne se ferment jamais automatiquement - vous devez utiliser
welcome.destroy ()
pour supprimer la fenêtre.pour exécuter plusieurs commandes - mettez-les dans une fonction et affectez cette fonction au bouton.
à propos de cela en utilisant plusieurs Tk () ... c'est un projet de groupe donc tout le monde faisait ses fenêtres lui-même ... l'édition du code reste toujours. Merci pour les commentaires.
Peu importe qu'il s'agisse d'un projet de groupe ou non, tkinter n'est pas conçu pour avoir plusieurs fenêtres racine (vous pouvez, mais c'est une technique avancée qui a des effets secondaires dont vous n'avez probablement pas conscience). L'ensemble de votre programme doit avoir exactement une instance de
Tk
.bien j'ai fait Toplevel () mais maintenant il ouvre également des fenêtres tk vides. github.com/RohanSreelesh/School_Project_CRM/blob/master/… . Quelqu'un peut-il aider s'il vous plaît?