1
votes

Existe-t-il un moyen pour qu'un bouton exécute plusieurs commandes

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?


8 commentaires

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 et mainloop. Vous devez utiliser Tk` pour créer uniquement la fenêtre principale. Pour les autres fenêtres, utilisez Toplevel . Et le programme ne doit utiliser qu'un seul mailoop .


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?


3 Réponses :


0
votes

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.


0 commentaires

0
votes

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()    


0 commentaires

0
votes

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()


0 commentaires