0
私はパスワードを作成するguiを構築しようとしています。私はパスワードを生成し、それをラベルに表示しています。しかし、ボタンを何度もクリックすると、古いパスワードが消えてしまうように見えますが、上に重なるだけです。私はまた、私はそれを訂正するように見えるエラーが発生していないが、それはGUIに影響を与えるようです。Python Tkinterのラベルのリフレッシュ
コード今のところです:
from tkinter import *
import random
myGui = Tk()
myGui.geometry('300x200+700+250')
myGui.title('Password Generator')
def passwordgen():
password = ''
for i in range(8):
##----runs the for loop 8 times
if (i == 0) or (i == 4):
password = password + chr(random.randint(97, 122))
if (i == 1) or (i == 5):
password = password + chr(random.randint(65, 90))
if (i == 2) or (i == 6):
password = password + chr(random.randint(48, 57))
if (i == 3) or (i == 7):
password = password + chr(random.randint(33, 47))
passLabel = Label(myGui, text=password)
passLabel.grid(row=0, column=1, sticky=E)
genPassBtn = Button(myGui, text="Generate Password", command=passwordgen)
genPassBtn.bind("<Button-1>", passwordgen)
genPassBtn.grid(row=0, column=0, sticky=W)
myGui.mainloop()
私が受け取るエラーは次のとおりです、私は達成するために期待しています結果は、パスワードを生成し、GUIを作成することです
return self.func(*args)
TypeError: passwordgen() takes 0 positional arguments but 1 was given
ハッシュを生成し、生成されたパスワードの値をチェックし、生成されたハッシュをテキストファイルにロードし、格納されたハッシュに対してパスワードを確認することができます。
さらに、私はアドバイスを受けてコードを修正し、強度を確認するために追加しました。コードは次のようになります。
from tkinter import *
import random
myGui = Tk()
myGui.geometry('300x200+700+250')
myGui.title('Password Generator')
def passwordgen():
password = ''
for i in range(8):
##----runs the for loop 8 times
if (i == 0) or (i == 4):
password = password + chr(random.randint(97, 122))
if (i == 1) or (i == 5):
password = password + chr(random.randint(65, 90))
if (i == 2) or (i == 6):
password = password + chr(random.randint(48, 57))
if (i == 3) or (i == 7):
password = password + chr(random.randint(33, 47))
strPassword.set(password)
def checkPassword():
strength = ['Blank', 'Very Weak', 'Weak', 'Medium', 'Strong', 'Very Strong']
score = 1
password = strPassword.get()
if len(password) < 1:
return strength[0]
if len(password) < 4:
return strength[1]
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])
genPassBtn = Button(myGui, text="Generate Password", command=passwordgen)
strPassword = StringVar()
lblPassword = Label(myGui, textvariable=strPassword)
lblPassword.grid(row=0, column=1, sticky=W)
genPassBtn.grid(row=0, column=0, sticky=W)
passwordStrength = StringVar()
checkStrBtn = Button(myGui, text="Check Strength", command=checkPassword)
checkStrBtn.grid(row=1, column=0)
checkStrLab = Label(myGui, textvariable=passwordStrength)
checkStrLab.grid(row=1, column=1)
myGui.mainloop()
多くの感謝のscotty。 strPasswordを使用して強度を確認できますか? – JSmith
強さの意味は不明ですが、strPassword.get()を使用して他の目的に使用する文字列の内容を返すことができます – scotty3785
このパスワードは非常に弱い、弱い、中程度の、強いなどと言いたいと思います.. aginstのような引数セットには、小文字、大文字、数字、または特殊文字があります。 – JSmith