2017-04-14 10 views
1

私はプログラミングの中で新しいです、そして、私は次のソースコードを作成して、ユーザーが正常にログインするかどうか確認します。私は、ユーザーが新しいウィンドウにリダイレクトし、エントリ内の正しい資格情報を入力した後に、現在のウィンドウを取り除きたい。このためにトップレベルメソッドを使用することは可能ですか?ログイン後のPython、Tkinter、SQlite3新しいウィンドウにユーザをリダイレクト

def Is_Valid(): 

    UsernameValidity=UserName_Entry.get()   
    PasswordValidity=Password_Entry.get() 
    cursor.execute('''SELECT password FROM users WHERE username = ?''', (UsernameValidity,)) 
    cursor.execute('''SELECT username FROM users WHERE password = ?''', (PasswordValidity,)) 
    LogInAttempt = cursor.fetchone()? 
    print (Is_Valid) # Testing 
    if LogInAttempt: 
     print (" One of the accounts have successfully logged in ") 
     IsValidText.config(text=" You have logged in! ", fg="black", highlightthickness=1) 
    else:? 
     print (" One of the accounts inputted the wrong credentials! ") 
     IsValidText.config(text=" Invalid username or Password! ", fg="black", highlightthickness=1) 
+0

Is_Valid関数は有効ですか?それは動作しますか?それがなければ、継続することに意味がない – abccd

+0

ええ、それはテストされ、それは動作します。しかし、いったんユーザーが、新しいクリーンウィンドウにリダイレクトされる正しい資格情報を入力し、現在のメインホームページが閉じられていることを確認したい。 はAttributeError: – sago

答えて

0

プログラムがこのポイントに完璧に動作と仮定すると、あなたはToplevelメソッドを使用することを歓迎以上です。また、ユーザにメッセージを見せる時間を与えるために.after()を含めます。

def NewPage(): 
    global NewRoot 
    root.withdraw() # hide (close) the root/Tk window 
    NewRoot = tk.Toplevel(root) 
    # use the NewRoot as the root now 

def Is_Valid(): 
    # same as before... 
    if LogInAttempt: 
     print (" One of the accounts have successfully logged in ") 
     IsValidText.config(text=" You have logged in! ", fg="black", highlightthickness=1) 
     root.after(2000, NewPage) # or whatever your Tk is called 
     # redirect to the NewPage function after 2 seconds 
    else: 
     print (" One of the accounts inputted the wrong credentials! ") 
     IsValidText.config(text=" Invalid username or Password! ", fg="black", highlightthickness=1) 

これにより元のウィンドウが閉じられ、新しい空白のウィンドウがポップアップします。注:.after(ms, callback)はmsを使用しているので、2000ms = 2sec

cursor.fetchone()elseの後の2つの疑問符を取り除きたいと思うかもしれません。

+0

は、私は次のエラーを取得する「_tkinter.tkapp」オブジェクトには属性「トップレベル」トップレベルで – sago

+0

資本Tを持っていない – abccd

+0

ええ、私は試してみました。私はまだ同じエラーが発生します:AttributeError: '_tkinter.tkapp'オブジェクトに属性 'Toplevel'がありません – sago

関連する問題