2017-04-03 77 views
-1

我有一個簡單的代碼,如果用戶存在於文件中,它將從文件中獲取用戶,如果登錄憑據在文件中進行了計算,則會打開該文件的位置,但我無法通過tkinter完成相同操作,至此我已完成這如何在tkinter中組合代碼?

from tkinter import * 
import tkinter.messagebox as tm 
import os 

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

     self.label_1 = Label(self, text="Username") 
     self.label_2 = Label(self, text="Password") 

     self.entry_1 = Entry(self) 
     self.entry_2 = Entry(self, show="*") 

     self.label_1.grid(row=0, sticky=E) 
     self.label_2.grid(row=1, sticky=E) 
     self.entry_1.grid(row=0, column=1) 
     self.entry_2.grid(row=1, column=1) 

     self.logbtn = Button(self, text="Login", command = self._login_btn_clickked) 
     self.logbtn.grid(columnspan=2) 

     self.pack() 

    def _login_btn_clickked(self): 
     #print("Clicked") 
     username = self.entry_1.get() 
     password = self.entry_2.get() 

     #print(username, password) 
     f = open("User.txt", "r") 
     for line in f.readlines(): 
      us, pw = line.strip().split("|") 
     if (username in us) and (password in pw==password): 
      print ("Login successful!") 
      f.close() 
      return True 
      print ("Wrong username/password") 
      f.close() 
      return False 
    def menu(): 
    #here's a menu that the user can access if he logged in. 
     users = [] 
     f = open("User.txt", "r") 
     for line in f.readlines(): 
      us,pw = line.strip().split("|") 
      users.append(us) 
     for i in users: 
      if (user == i): 
      os.startfile("F:\waleed") ''' 
     if user=="malik": 
     os.system('xdg-open "/home/pi/Desktop/malik"') 
     if user=="john": 
     os.system('xdg-open "/home/pi/Desktop/john"') 
     ''' 




     #here's a menu that the user can access if he logged in. 


root = Tk() 
lf = LoginFrame(root) 
root.mainloop() 
+0

你的代碼有什麼都沒有做Tkinter的幾個問題;它甚至不是有效的python(在三重引號字符串處)。將問題縮小到一個問題,以獲得有用的幫助。 – alexis

回答

0

假設你User.txt文件看起來是這樣的(包括本到你的問題會是一個好主意):

username_1|password1 
username_2|password2 

您不必使用in運營商在這案件。如果一個元素被包含在一個容器中,例如:

"b" in "abc" # returns True 
"z" in "abc" # returns False 

在你的情況,你可以,如果用戶名和密碼完全匹配(使用==)在您的User.txt文件中的每一行比較in運算符返回True

應用這一變化,並使用開放上下文管理和關閉文件時,_login_btn_clickked()方法可能是這個樣子:

def _login_btn_clickked(self): 
    username = self.entry_1.get() 
    password = self.entry_2.get() 

    with open("User.txt") as f: 
     for line in f: 
      us, pw = line.strip().split("|") 
      if us == username and pw == password: 
       print ("Login successful!") 
       return True