2017-10-15 4 views
-1

J'écris un code pour un système de connexion en utilisant tkinter et pour une raison quelconque, lorsque je lance le code, il n'y a pas de messages d'erreur et une fenêtre apparaît mais sans titre, boutons ou les étiquettes dont j'ai besoin.Rien à venir dans une fenêtre GUI (Tkinter)

from tkinter import * 
import tkinter.messagebox 

frame = Tk() 

def adminlogincheck(self, master): 
    frame = Frame(master) 
    frame.pack() 
    if username == '123key' and password == 'key123': 
     accept = Label(frame, text='Login Successful') 
    else: 
     decline = Label(frame, text='Login incorrect') 
    mainloop() 

def adminselect(self, master): 
    frame = Frame(master) 
    frame.pack() 
    self.button = Button(frame, text="Cancel", fg="red", command=quit) 
    self.button.pack(side=LEFT) 
    self.slogan = Button(frame, text="Proceed", command=self.adminlogin) 
    self.slogan.pack(side=LEFT) 
    mainloop() 

def adminlogin(self, master): 
    frame = Frame(master) 
    frame.pack() 
    username_entry = Entry(frame) 
    password_entry = Entrey(frame) 
    confirm = Button(frame, text='Login', command = adminlogincheck) 
    loginquit = Button(frame, text='Cancel', command=quit) 
    mainloop() 

Je vais ajouter plus après que le système de connexion fonctionne, mais est-ce que quelqu'un sait pourquoi aucun bouton ou étiquette n'apparaît?

+0

Vous ne devriez avoir qu'une boucle principale par script. Puisque mainloop est un appel bloquant qui empêche le script de continuer à lire. Supprimez tous vos fils principaux et ajoutez-en un à la fin de votre script. – abccd

+0

Et chaque widget (étiquette, entrée, cadre, etc.) doit être emballé pour être affiché. Les première et dernière fonctions ont des entrées, des étiquettes et des boutons qui ne sont pas emballés. –

+0

@ RonNorris J'ai mis les packs à divers endroits mais le même problème se produit. Y a-t-il quelque part en particulier dont j'ai besoin? – Jack

Répondre

0

Il y a assez de demandes dans votre requête pour voir ce que vous essayez d'accomplir, mais il y a beaucoup de problèmes avec le code. Voici un modèle de travail de ce que vous semblez travailler vers ...

from tkinter import * 
import tkinter.messagebox 


class Admin: 

    def __init__(self, master): 
     self.frame = Frame(master) 
     self.frame.pack() 
     self.username = StringVar() 
     self.password = StringVar() 

    def logincheck(self): 
     self.clearframe() 
     if self.username.get() == '123key' and self.password.get() == 'key123': 
      accept = Label(self.frame, text='Login Successful') 
      accept.pack(side=LEFT) 
     else: 
      decline = Label(self.frame, text='Login incorrect') 
      decline.pack(side=LEFT) 

    def select(self): 
     self.clearframe() 
     self.button = Button(self.frame, text="Cancel", fg="red", command=quit) 
     self.button.pack(side=LEFT) 
     self.slogan = Button(self.frame, text="Proceed", command=self.adminlogin) 
     self.slogan.pack(side=LEFT) 

    def login(self): 
     self.clearframe() 
     username_entry = Entry(self.frame, textvariable=self.username) 
     username_entry.pack() 
     password_entry = Entry(self.frame, textvariable=self.password) 
     password_entry.pack() 
     confirm = Button(self.frame, text='Login', command = self.logincheck) 
     confirm.pack() 
     loginquit = Button(self.frame, text='Cancel', command=quit) 
     loginquit.pack() 

    def clearframe(self): 
     # Destroy all children of the class's frame. 
     for child in self.frame.winfo_children(): 
      child.destroy() 

root = Tk() 
admin = Admin(root) 
admin.login() 
mainloop()