如何在tkinter中组合代码?

时间:2017-04-03 10:46:52

标签: python 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()

1 个答案:

答案 0 :(得分:0)

假设您的User.txt文件看起来像这样(将此问题包含在您的问题中是个好主意):

username_1|password1
username_2|password2

在这种情况下,您不必使用in运算符。如果元素包含在容器中,in运算符将返回True,例如:

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

在您的情况下,您只需比较用户名和密码是否与==文件中的每一行完全匹配(使用User.txt)。

应用此更改并使用上下文管理器打开和关闭文件,_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