2017-11-30 5 views
-1

私はtkinterのlibで簡単なログインデスクトップアプリケーションを開発しようとしています。私のコードは動作していますが、正しいユーザー名とパスワードでログインしようとすると、NoneTypeエラーが発生します。私はPycharmに自分のコードを書いています。ここに私のコードは次のとおりです。Tkinter/Python - 単純なログインアプリケーションなしタイプエラー

from tkinter import * 
window=Tk() 
rootname = "Casca" 
rootpasswd = "12345" 
def loginfunc(): 
    passwd=plogin.get() 
    name=ulogin.get() 
    if name==rootname and passwd==rootpasswd: 
     print("Successfull Login") 
    else: 
     print("Unauthorized User") 
username=Label(text="Username:",font="Consolas,20").grid(row=0,column=0) 
ulogin=Entry(font="Consolas,20",width=8).grid(row=0,column=1) 
passwd=Label(text="Password:",font="Consolas,20").grid(row=1,column=0) 
plogin=Entry(font="Consolas,20",width=8,show="*").grid(row=1,column=1) 
sremember=Checkbutton(text="I forgot my password",font="Consolas,20").grid(row=2,column=0,columnspan=2) 
login=Button(text="Login",font="Consolas,20",command=loginfunc).grid(row=3,column=0) 
window=mainloop() 

そして、ここではエラーです:

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "BLABLABLA", line 1699, in __call__ 
    return self.func(*args) 
    File "BLABLABLA", line 9, in loginfunc 
    passwd=plogin.get() 
AttributeError: 'NoneType' object has no attribute 'get' 

答えて

0

あなたがplogin = Entry(...).grid(...)を行うと、あなたがNoneある.grid()の結果、とploginを交換してください。これを修正するには、次のようにします。

plogin = Entry(...) 
plogin.grid(...) 

などの他のウィジェットでも同様です。

+0

あなたは素晴らしいpycoderです!私はあなたのソリューションを適用し、それは働いた!みんな大好き! – Casca

1

Entry()はTkinterのエントリウィジェットのインスタンス

Entry().grid()戻りNoneTypeを返します。

from tkinter import * 
window=Tk() 
rootname = "Casca" 
rootpasswd = "12345" 
def loginfunc(): 
    passwd=plogin.get() 
    name=ulogin.get() 
    if name==rootname and passwd==rootpasswd: 
     print("Successfull Login") 
    else: 
     print("Unauthorized User") 
username=Label(text="Username:",font="Consolas,20").grid(row=0,column=0) 

ulogin=Entry(font="Consolas,20",width=8) 
ulogin.grid(row=0,column=1) 
passwd=Label(text="Password:",font="Consolas,20").grid(row=1,column=0) 
plogin=Entry(font="Consolas,20",width=8,show="*") 
plogin.grid(row=1,column=1) 
sremember=Checkbutton(text="I forgot my password",font="Consolas,20").grid(row=2,column=0,columnspan=2) 
login=Button(text="Login",font="Consolas,20",command=loginfunc).grid(row=3,column=0) 
window=mainloop() 

以下のように

は、あなたはそれが価値だ得るために、チェックボックスと同じことを行う必要がありますあなたのコードを変更し

。 これらのウィジェットの内容を格納するには、IntVar変数とStringVar変数も考慮する必要があります。

+0

それはscotty働いた!今私はあなたが私に言っている論理を理解しています:) – Casca

+0

@Casca素晴らしい。私たちが助けられたら、最も助けになった答えを受け入れてください。 – scotty3785