Python 如何在tkinter中组合代码?

Python 如何在tkinter中组合代码?,python,tkinter,Python,Tkinter,我有一个简单的代码,可以从文件中提取用户,如果用户存在于文件中,则可以打开该文件的位置,如果登录凭据在文件中匹配,但我无法通过tkinter执行相同的操作,到目前为止,我已经完成了此操作 from tkinter import * import tkinter.messagebox as tm import os class LoginFrame(Frame): def __init__(self, master): super().__init__(master)

我有一个简单的代码,可以从文件中提取用户,如果用户存在于文件中,则可以打开该文件的位置,如果登录凭据在文件中匹配,但我无法通过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()

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

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

"b" in "abc"  # returns True
"z" in "abc"  # returns False
在您的情况下,您可以比较
User.txt
文件中每一行的用户名和密码是否完全匹配(使用
==

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

您的代码有几个与tkinter无关的问题;它甚至不是有效的python(至少是三倍引号的字符串)。将你的问题缩小到一个问题,以获得有用的帮助。
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