2016-03-24 12 views
-1

kayıp (kod modüler yapmaya çalıştı). Ana GUI kod no (I configure edebilmek ve metni değişmedi user_name ve pwd ancak inst_lbl dayalı yeni metni görüntülemek için LoginFrame yılında inst_lbl beklenen ŞimdiTkinter olay giderici referans bir ayrı dosya <code>verification.py</code> bir sınıf <code>Verification</code> bir olay işleyicisi koymak aletler

from tkinter import * 
from make_widget import * 
from verification import * 

class LoginFrame(Frame): 
    def __init__(self, parent): 
    super(LoginFrame, self).__init__() 

    self.parent = parent   
    self.initUI() 

    # initialize the login screen UI 
    def initUI(self): 
     # Set up login frame properties 
     self.parent.title("Login Screen") 

     # creating instruction label 
     self.inst_lbl = MakeWidget.make_label(self.parent, "Please login to continue") 

     # creating labels and entries for user name and password 
     self.user_name = MakeWidget.make_entry(self.parent, caption="User Name:") 
     self.pwd = MakeWidget.make_entry(self.parent, caption="User Password:", show="*") 

     # create a login button 
     login_btn = MakeWidget.make_button(self.parent, Verification.verify_user(self.user_name, self.pwd, self.inst_lbl), "Login")   


def main(): 
    top = Tk()  
    app = LoginFrame(top) 
    top.mainloop() 


if __name__ == '__main__': 
    main() 

# verification.py 
from tkinter import * 

class Verification: 
# verify user name and password 
#---------------------------------------------------------------------- 
@staticmethod 
def verify_user(user_name, pwd, inst_lbl): 
    """verify users""" 
    if user_name.get() == "admin" and pwd.get() == "123": 
     inst_lbl.configure(text="User verified") 
    else: 
     inst_lbl.configure(text="Access denied. Invalid username or password") 


# make_widget.py 
from tkinter import * 

class MakeWidget(Frame): 
def __init__(self, parent): 
    super(MakeWidget, self).__init__() 

    self.parent = parent   


# create a button widget 
#---------------------------------------------------------------------- 
@staticmethod 
def make_button(parent, command, caption=NONE, side=TOP, width=0, **options): 
    """make a button""" 
    btn = Button(parent, text=caption, command=command) 

    if side is not TOP: 
     btn.pack(side=side) 
    else: 
     btn.pack()  

    return btn 


# create a label widget 
@staticmethod 
def make_label(parent, caption=NONE, side=TOP, **options): 
    label = Label(parent, text=caption, **options) 

    if side is not TOP: 
     label.pack(side=side) 
    else: 
     label.pack() 

    return label 


# create a entry widget 
@staticmethod 
def make_entry(parent, caption=NONE, side=TOP, width=0, **options): 
    MakeWidget.make_label(parent, caption, side) 
    entry = Entry(parent, **options) 
    if width: 
     entry.config(width=width) 
    if side is not TOP: 
     entry.pack(side=side) 
    else: 
     entry.pack() 

    return entry   

aşağıdaki gibidir hata oluşturuldu). Yani sorunu nasıl çözebilirim. Sen hemenVerification.verify_user arayarak ve düğme komutu böylece sonucu atama vardır

login_btn = MakeWidget.make_button(self.parent, Verification.verify_user(self.user_name, self.pwd, self.inst_lbl), "Login") 

:

+1

Ne "olmadı" ne anlama gelir? Bir hata mı attı? Eğer öyleyse, ne hata? Ayrıca, bu kod çalışmıyor, girinti hataları var ve make_label için kod eksik. –

+0

@BryanOakley OP'yi değiştirdim, biraz açıklığa kavuştum, tüm kodu ekledim – daiyue

+1

girinti hala bozuk. Ve kodu üç dosyaya kaydetmemizi zorlamak yerine, tüm sınıfları tek bir dosyaya koyun. –

cevap

İlgili konular