我正在尝试在python中创建密码生成器和检查程序。目前我已经完成了gui,但是我无法更新tkinter标签并显示textvariable,因为它只是出现一个空格而不是'错误',弱'其他人帮助我使用了发电机,但不幸的是,他们所做的并不适用于这种情况。
class PageOne(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
label1 = tk.Label(self, text="Check your password", font=controller.title_font)
label1.pack(side="top", fill="x", pady=10)
entry = tk.Entry(self, bd =6)
button1 = tk.Button(self, text="Enter", command=checkPassword(entry.get()))
self.update
button2 = tk.Button(self, text="Back",
command=lambda: controller.show_frame("StartPage"))
label2 = tk.Label(self, text="Strength:", font=controller.title_font)
label3 = tk.Label(self, textvariable=passwordStrength, font=controller.title_font)
entry.pack()
button1.pack()
button2.pack()
label2.pack()
label3.pack()
def checkPassword(password):
passwordStrength = tk.StringVar()
strength = ['Password can not be Blank', 'Very Weak', 'Weak', 'Medium', 'Strong', 'Very Strong', 'Password must be less than 24 characters']
score = 1
print (password), len(password)
if len(password) == 0:
passwordStrength.set(strength[0])
return
if len(password) > 24:
passwordStrength.set(strength[6])
return
if len(password) < 4:
passwordStrength.set(strength[1])
return
if len(password) >= 8:
score += 1
if re.search("[0-9]", password):
score += 1
if re.search("[a-z]", password) and re.search("[A-Z]", password):
score += 1
if re.search(".", password):
score += 1
passwordStrength.set(strength[score])
如果您需要有关我的项目或其他代码的更多信息,请询问。非常感谢所有帮助,提前感谢:)
答案 0 :(得分:1)
&#34; 将变量调用到tkinter中同一类中的不同函数的答案&#34;就是将这些变量分配给类属性。
作为具有此类行为的tkinter示例,下面的代码会生成一个标签,并在1秒后调用一个函数来更改标签的文本,以查找类属性:
import tkinter as tk
class VariableAssignedAsAttribute(tk.Label):
def __init__(self, master):
super().__init__(master)
aVariable = "some string"
self.anAttribute = aVariable
self['text'] = "Unchanged Text"
def updateLabel(self):
self.config(text=self.anAttribute)
root = tk.Tk()
lbl = VariableAssignedAsAttribute(root)
lbl.pack()
root.after(1000, lbl.updateLabel)
root.mainloop()
我会检查评论中提供的PM 2Ring引用。