【问题标题】:asking user to input password after a specific period of time in python在python中的特定时间段后要求用户输入密码
【发布时间】:2021-03-06 12:39:21
【问题描述】:

我正在 python 中使用 Tkinter 模块编写此函数。

我希望用户在按下show 时输入密码。但我只想让用户在 15 分钟前询问最后一个密码时输入密码。

    def show(self):

    if self.showButton['text'] == "hide":
        self.showButton['text'] = "show"
        self.password_text_label.grid_forget()
        self.password_display_label.grid(row=6 + self.count, column=2, sticky=E, padx=5)
    else:
        popupWindow(root)   # this will ask for master-password if you want to see the password (Another Layer of security)
        self.showButton['text'] = "hide"
        self.password_display_label.grid_forget()
        self.password_text_label.grid(row=6 + self.count, column=2, sticky=E, padx=5)

【问题讨论】:

  • 我对您需要什么感到有些困惑。您是要给用户 15 分钟的时间来写密码还是...?
  • 您可以将密码保存 15 分钟,然后将其设置为None,并继续检查密码是否曾经变为None

标签: python python-3.x tkinter time


【解决方案1】:

创建一个变量并存储上次登录时间,然后将其与当前时间进行比较。要获取时差,您可以使用relativedelta

这是一个例子:

from tkinter import *
from datetime import datetime
from dateutil.relativedelta import relativedelta


minutes = 15

def askPasswd():
    global lastAsked
 
    if lastAsked is None or relativedelta(datetime.now(), lastAsked).minutes  >= minutes:
        lastAsked = datetime.now()

        top = Toplevel()
        Label(top, text='Password').pack()
        Entry(top).pack()
        
root = Tk()

lastAsked = None

askBtn = Button(root, text='Ask', command=askPasswd)
askBtn.pack()

root.mainloop()

【讨论】:

  • datetime.timedelta 怎么样,内置模块。
  • @CoolCloud 你也可以使用它。使用 timedelta 将采取额外的步骤来做同样的事情。看看this
猜你喜欢
  • 2012-06-10
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 2011-08-30
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
相关资源
最近更新 更多