如何在一段时间后自动注销用户。Python Tkinter
我正在尝试为树莓Pi创建一个程序来控制储物柜的门。 一旦用户成功登录,我想激活所有锁柜门按钮以打开门。 我还想在几分钟不活动后注销用户。 如何在一段时间后自动注销用户。 任何帮助都将不胜感激如何在一段时间后自动注销用户。Python Tkinter,python,authentication,Python,Authentication,我正在尝试为树莓Pi创建一个程序来控制储物柜的门。 一旦用户成功登录,我想激活所有锁柜门按钮以打开门。 我还想在几分钟不活动后注销用户。 如何在一段时间后自动注销用户。 任何帮助都将不胜感激 from tkinter import * #Create list users = {'Tom': '123', 'Bli':345} user_logged_in = FALSE def user_logged_in_fun(user_logged_in): if user_logged
from tkinter import *
#Create list
users = {'Tom': '123', 'Bli':345}
user_logged_in = FALSE
def user_logged_in_fun(user_logged_in):
if user_logged_in == TRUE:
root.config(bg = 'orange')
print('SUCCESSSSSSSS')
else:
root.config(bg='green')
def main_window():
global root
global Frame1
root = Tk()
root.title('Tomasz Blicharz')
root.configure(bg ='green')
root.geometry('800x500')
Frame1 = Frame(root, width=760, height = 190)
Frame1.configure(bg='red')
Frame1.place(x=20, y=0)
Main_Window_Button()
pockets()
root.mainloop()
def pockets():
global Frame2
Frame2 = Frame(root, width=760, height=290)
Frame2.configure(bg='yellow')
Frame2.place(x=20, y=200)
Btn1 = Button(Frame2, text = '1')
Btn1.grid(row=0, column=0, padx= 10, pady = 10, ipadx= 50, ipady=50)
Btn2 = Button(Frame2, text = '2')
Btn2.grid(row=0, column=1, padx= 10, pady = 10, ipadx= 50, ipady=50)
Btn3 = Button(Frame2, text = '3')
Btn3.grid(row=0, column=2, padx= 10, pady = 10, ipadx= 50, ipady=50)
Btn4 = Button(Frame2, text = '4')
Btn4.grid(row=0, column=3, padx= 10, pady = 10, ipadx= 50, ipady=50)
Btn5 = Button(Frame2, text = '5')
Btn5.grid(row=0, column=4, padx= 10, pady = 10, ipadx= 50, ipady=50)
def Main_Window_Button():
But1 = Button(Frame1, text='LOG IN', width = 20, height = 10, command = open_new_window)
But1.place(x=20, y=20)
#But1.pack()
But2 = Button(Frame1, text='LOG OUT', width = 20, height = 10, command = log_out_fun )
But2.place(x=260, y=20)
But3 = Button(Frame1, text='EXIT', width=20, height=10, command=exit1)
But3.place(x=520, y=20)
def exit1():
exit()
def log_out_fun():
user_logged_in_fun(0)
def open_new_window():
global new_window
new_window = Toplevel()
new_window.title('SUSSESS')
new_window.geometry('300x300')
#==================================================
global username_verify
global password_verify
username_verify = StringVar()
password_verify = StringVar()
global username_login_entry
global password_login_entry
username_login_entry = Entry(new_window, textvariable=username_verify)
username_login_entry.pack()
password_login_entry = Entry(new_window, textvariable=password_verify, show='*')
password_login_entry.pack()
Button(new_window, text="Login", width=10, height=1, command=login_verify).pack()
def login_verify():
print(username_login_entry.get())
print(password_login_entry.get())
checkpas(username_login_entry.get(), password_login_entry.get())
def checkpas(login_username, login_password):
lab_text = 'PODAJ HASLO'
if (login_username in users):
if users[login_username] == login_password:
print('username and password match')
user_logged_in_fun(1)
new_window.withdraw() #Correct one
else:
print('user entered the wrong password')
lab_text = 'INCORRECT PASSWORD'
else:
print('your username is not registered. Would you like to register')
lab_text = 'USER NOT RECOGNISED'
Lab2 = Label(new_window, text=lab_text)
Lab2.pack()
#========================================
main_window()
#========================================
使用。使用它,您可以等待特定的时间,然后启动回调
root.after(time_in_milliseconds, log_out_fun)
您还可以启动等待特定时间的,并将用户注销。CoderCharmander-感谢您的支持。我用过穿线,效果很好
from tkinter import *
import threading
from time import time
import time
def logout_users(delay):
time.sleep(delay)
print('YYYYYYYYYYYYYYYYYYYYYYYYYYYY')
log_out_fun()
#Create list
users = {'Tom': '123', 'Bli':345}
user_logged_in = FALSE
def wylacz_ikony():
for child in Frame2.winfo_children():
child.configure(state='disable')
def wlacz_ikony():
for child in Frame2.winfo_children():
child.configure(state='active')
def user_logged_in_fun(user_logged_in):
if user_logged_in == TRUE:
root.config(bg = 'orange')
wlacz_ikony()
t1.start()
#==========================================
# ==========================================
print('SUCCESSSSSSSS')
else:
root.config(bg='green')
wylacz_ikony()
def main_window():
global root
global Frame1
root = Tk()
root.title('Tomasz Blicharz')
root.configure(bg ='green')
root.geometry('800x500')
Frame1 = Frame(root, width=760, height = 190)
Frame1.configure(bg='red')
Frame1.place(x=20, y=0)
Main_Window_Button()
pockets()
# root.mainloop()
def pockets():
global Frame2
Frame2 = LabelFrame(root, width=760, height=290, text='LOCKER DOOR')
Frame2.configure(bg='yellow')
Frame2.place(x=20, y=200)
Btn1 = Button(Frame2, text = '1')
Btn1.grid(row=0, column=0, padx= 10, pady = 10, ipadx= 50, ipady=50)
Btn2 = Button(Frame2, text = '2')
Btn2.grid(row=0, column=1, padx= 10, pady = 10, ipadx= 50, ipady=50)
Btn3 = Button(Frame2, text = '3')
Btn3.grid(row=0, column=2, padx= 10, pady = 10, ipadx= 50, ipady=50)
Btn4 = Button(Frame2, text = '4')
Btn4.grid(row=0, column=3, padx= 10, pady = 10, ipadx= 50, ipady=50)
Btn5 = Button(Frame2, text = '5')
Btn5.grid(row=0, column=4, padx= 10, pady = 10, ipadx= 50, ipady=50)
wylacz_ikony()
def Main_Window_Button():
But1 = Button(Frame1, text='LOG IN', width = 20, height = 10, command = open_new_window)
But1.place(x=20, y=20)
if user_logged_in == TRUE:
Bu1.configure(state='disable')
#But1.pack()
But2 = Button(Frame1, text='LOG OUT', width = 20, height = 10, command = log_out_fun )
But2.place(x=260, y=20)
But3 = Button(Frame1, text='EXIT', width=20, height=10, command=exit1)
But3.place(x=520, y=20)
root.resizable(0, 0)
def exit1():
#t1.join()
root.destroy()
exit()
def log_out_fun():
user_logged_in_fun(0)
def open_new_window():
global new_window
new_window = Toplevel()
new_window.title('SUSSESS')
new_window.geometry('300x300')
#==================================================
global username_verify
global password_verify
username_verify = StringVar()
password_verify = StringVar()
global username_login_entry
global password_login_entry
username_login_entry = Entry(new_window, textvariable=username_verify)
username_login_entry.pack()
password_login_entry = Entry(new_window, textvariable=password_verify, show='*')
password_login_entry.pack()
Button(new_window, text="Login", width=10, height=1, command=login_verify).pack()
global t1
t1 = threading.Thread(target=logout_users, args=(5,))
def login_verify():
print(username_login_entry.get())
print(password_login_entry.get())
checkpas(username_login_entry.get(), password_login_entry.get())
def checkpas(login_username, login_password):
lab_text = 'PODAJ HASLO'
if (login_username in users):
if users[login_username] == login_password:
print('username and password match')
user_logged_in_fun(1)
new_window.withdraw()
else:
print('user entered the wrong password')
lab_text = 'INCORRECT PASSWORD'
password_login_entry.delete(0, END)
else:
print('your username is not registered. Would you like to register')
username_login_entry.delete(0,END)
password_login_entry.delete(0, END)
lab_text = 'USER NOT RECOGNISED'
Lab2 = Label(new_window, text=lab_text)
Lab2.pack()
#========================================
#jeden = TRUE
#while(jeden):
#__init__
main_window()
# time.sleep(5)
# jeden = FALSE
#========================================
mainloop()
谢谢你的帮助。我使用线程自动注销。但是我得到一个错误:RuntimeError:当我再次尝试登录时,线程只能启动一次。你知道有什么问题吗?你必须在第一个线程完成工作后实例化一个新线程。