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