2017-09-11 9 views
1

私の作業ディレクトリにデータが入っている私のDBとしてメモ帳でtkinterにパスワードシステムを作成したいが、入力フィールドにデータを挿入すると、失敗しました.txtファイルを作成しましたが、関数がファイルから読み取ることができないようです。これを行う方法に関する提案。ファイルからデータを読み込むtkinterでパスワードシステムを作成する方法

import tkinter as tk 
import sys 
from tkinter import messagebox 


now = open("passdoc.txt","w+") 
now.write("user\n") 
now.write("python3") 
now.close() 

def login_in(): 
    with open("passdoc.txt") as f: 
     new = f.readlines() 
     name = new[0].rstrip() 
     password = new[1].rstrip() 
    if entry1.get() == new[0] in passdoc.txt and entry2.get() == new[1] in 
passdoc.txt: 
     root.deiconify() 
     log.destroy() 
    else: 
     messagebox.showerror("error","login Failed") 


def close(): 
    log.destroy() #Removes toplevel window 
    root.destroy() #Removes root window 
    sys.exit() #Ends the script 


root=tk.Tk() 
log = tk.Toplevel() # 

root.geometry("350x350") 
log.geometry("200x200") 

entry1 = tk.Entry(log) #Username entry 
entry2 = tk.Entry(log) #Password entry 
button1 = tk.Button(log, text="Login", command=login_in) #Login button 
button2 = tk.Button(log, text="Cancel", command=close) #Cancel button 
label1 = tk.Label(root, text="tkinter password system") 

entry1.pack() 
entry2.pack() 
button1.pack() 
button2.pack() 
label1.place(x=30,y=300) 


label = tk.Label(root, text="welcome").pack() 

root.withdraw() 
root.mainloop() 

私もこの機能を作成したが、すべてはあなたがいくつかの作業を必要とし、あなたのコード内のいくつかを持っていますが、主な問題は、あなたのlogin_in()機能である私のため

def login_in(): 
    with open("passdoc.txt") as f: 
     new = f.readlines() 
     name = new[0].rstrip() 
     password = new[1].rstrip() 
    if entry1.get() == name in passdoc.txt and entry2.get() == password in 
passdoc.txt: 
     root.deiconify() 
     log.destroy() 
    else: 
     messagebox.showerror("errror","login failed") #error login failed 
(corrections) 
+0

ボタンを押したときに名前とパスワードの内容を確認しようとしましたか?これらの行のすぐ下にprintステートメントを追加してチェックすることができます。 – Lafexlos

+0

また、ifステートメントは間違っています。このコードでこの行にNameErrorを取得する必要があります。 – Lafexlos

答えて

0

をうまくていないようです。

ifステートメントはすべて間違っています。なぜあなたがそれをあなたのやり方で書いたのかはわかりませんが、それを修正することができます。あなたはname = new[0].rstrip()password = new[1].rstrip() を定義しているので

ユーザーが正しい資格情報を入力しているかどうかを確認するためにnamepasswordを使用することができます。

だからあなたif文は次のようになります。in passdoc.txt

if entry1.get() == name and entry2.get() == password: 

ご利用には、何もしていないとのpythonにpassdoc.txtは、未定義の変数のように見え、if文に失敗するので、動作することはできません。あなたはあなたがあなたがあなたのコードを短くするために少しを望んでいた場合は、namepassword変数を削除することができwith open()声明

ためfという名前の1を作成したpassdocという名前の変数を作成していないfとしてpassdoc.txtのすべてのコンテンツをインポートすることを忘れないでください

def login_in(): 
    with open("passdoc.txt") as f: 
     new = f.readlines() 
     name = new[0].rstrip() 
     password = new[1].rstrip() 
    if entry1.get() == name and entry2.get() == password: 
     root.deiconify() 
     log.destroy() 
    else: 
     messagebox.showerror("error","login Failed") 

またはこの:とちょうどnew

でだからあなたlogin_in()機能は、このいずれかのようになります。if文を記述します。

def login_in(): 
    with open("passdoc.txt") as f: 
     new = f.readlines() 
    if entry1.get() == new[0].rstrip() and entry2.get() == new[1].rstrip(): 
     root.deiconify() 
     log.destroy() 
    else: 
     messagebox.showerror("error","login Failed") 
+0

訂正していただきありがとうございます、これは将来確実にガイドされます。 –

関連する問題