2016-01-03 2 views
0

Мне присвоен кусок домашней работы, чтобы добавить графический интерфейс tkinter в обычный код python.
Это мой код:Проблемы с Python tkinter

from tkinter import * 
Window = Tk() 
PasswordActual = Entry(Window) 
Password = str(PasswordActual) 
L1 = Label(Window, text = "Enter password:") 
L2 = Label(Window) 
def Main(): 
    PasswordCheck1 = len(Password) 
    NumbersList = [] 
    CapsList = [] 
    LowersList = [] 
    def PasswordProcesser(WhatCharacters, CharactersInPassword): 
     for Characters in WhatCharacters: 
      if Characters in Password: 
       PasswordCheck2 = Characters in Password 
       if CharactersInPassword == "Numbers": 
        NumbersList.append(PasswordCheck2) 
       elif CharactersInPassword == "Caps": 
        CapsList.append(PasswordCheck2) 
       elif CharactersInPassword == "Lowers": 
        LowersList.append(PasswordCheck2) 
    if PasswordCheck1 >= 6 and PasswordCheck1 <= 12: 
     PasswordProcesser(["1","2","3","4","5","6","7","8","9"], "Numbers") 
     PasswordProcesser(["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","Q","Y","Z"], "Caps") 
     PasswordProcesser(["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"], "Lowers") 
     NumbersInPassword = sum(NumbersList) 
     CapsInPassword = sum(CapsList) 
     LowersInPassword = sum(LowersList) 
     if NumbersInPassword == 0 and CapsInPassword == 0 and LowersInPassword > 0 or CapsInPassword == 0 and NumbersInPassword > 0 and LowersInPassword == 0 or LowersInPassword == 0 and CapsInPassword > 0 and NumbersInPassword == 0: 
      L2.configure(text = "Password is weak") 
     elif NumbersInPassword == 0 and CapsInPassword > 0 and LowersInPassword > 0 or CapsInPassword == 0 and LowersInPassword > 0 and NumbersInPassword > 0 or LowersInPassword == 0 and NumbersInPassword > 0 and CapsInPassword > 0: 
      L2.configure(text = "Password is medium") 
     else: 
      L2.configure(text = "Password is strong") 
    else: 
     L2.configure(text = "Password too long or short") 
Checker = Button(Window, text = "Check Password", command = Main) 
L1.grid(row = 1, column = 1) 
PasswordActual.grid(row = 1, column = 2) 
Checker.grid(row = 2, column = 1) 
L2.grid(row = 2, column = 2) 

Мой желаемый результат сообщает пользователю, что его код является слабой, средней или сильной. Он работает без добавленного материала tkinter, но он неоднократно говорит мне, что мой пароль слабый. Есть ли причина для этого, или я просто глуп? (Я начинаю tkinter) Thx заранее.
Это мой (рабочий) код без GUI:

def Main2(): 
    Password = input("What is your password?: ") 
    PasswordCheck1 = len(Password) 
    NumbersList = [] 
    CapsList = [] 
    LowersList = [] 
    def ExitFunc(): 
     Exit = input("Do you want to exit or retry?: ") 
     if Exit == "exit" or Exit == "Exit": 
      exit 
     elif Exit == "retry" or Exit == "Retry": 
      Main2() 
     else: 
      print("Invalid input, enter exit or retry") 
      ExitFunc() 
    def PasswordProcesser(WhatCharacters, CharactersInPassword): 
     for Characters in WhatCharacters: 
      if Characters in Password: 
       PasswordCheck2 = Characters in Password 
       if CharactersInPassword == "Numbers": 
        NumbersList.append(PasswordCheck2) 
       elif CharactersInPassword == "Caps": 
        CapsList.append(PasswordCheck2) 
       elif CharactersInPassword == "Lowers": 
        LowersList.append(PasswordCheck2) 
    if PasswordCheck1 >= 6 and PasswordCheck1 <= 12: 
     PasswordProcesser(["1","2","3","4","5","6","7","8","9"], "Numbers") 
     PasswordProcesser(["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","Q","Y","Z"], "Caps") 
     PasswordProcesser(["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"], "Lowers") 
     NumbersInPassword = sum(NumbersList) 
     CapsInPassword = sum(CapsList) 
     LowersInPassword = sum(LowersList) 
     if NumbersInPassword == 0 and CapsInPassword == 0 and LowersInPassword > 0 or CapsInPassword == 0 and NumbersInPassword > 0 and LowersInPassword == 0 or LowersInPassword == 0 and CapsInPassword > 0 and NumbersInPassword == 0: 
      print("Password is weak, try and include capital, lowercase and numerical characters") 
      ExitFunc() 
     elif NumbersInPassword == 0 and CapsInPassword > 0 and LowersInPassword > 0 or CapsInPassword == 0 and LowersInPassword > 0 and NumbersInPassword > 0 or LowersInPassword == 0 and NumbersInPassword > 0 and CapsInPassword > 0: 
      print("Password is medium, try and include capital, lowercase and numerical characters") 
      ExitFunc() 
     else: 
      print("Password is strong") 
      ExitFunc() 
    else: 
     print("Password too long or short, it needs to be no shorter than 6 and no longer than 12") 
     ExitFunc() 
Main2() 
+0

@Zetys Я уже знаю, как это сделать, что это графический интерфейс пользователя, который сделал проблемы. –

+0

@MasterChief Я все еще пытаюсь решить это, графический интерфейс tkinter кажется прекрасным ... Я обнаружил, что в разделе проверки есть проблемы. –

+0

Попробуйте добавить скобки в свои условия (или еще лучше использовать отдельную функцию для вычисления силы пароля ...) –

ответ

2

Проблема заключается в пароле получить.
Вы Шоуда получить пароль от Entry в Main функции, как это:

PasswordCheck1 = len(PasswordActual.get()) 

Необходимо удалить третью строку Password = str(PasswordActual), потому что это ссылка на PasswordActual.

Посмотрите это:

from tkinter import * 
Window = Tk() 
PasswordActual = Entry(Window) 
L1 = Label(Window, text = "Enter password:") 
L2 = Label(Window) 
def Main(): 
    Password = PasswordActual.get() 
    PasswordCheck1 = len(Password) 
    .............................. 
+0

Это не решает проблему –

+0

Это заставляет работать ограничение длины, но он все еще выводит пароль слабый, несмотря ни на что. –

+0

Это работает !!!! Thx so @Zetys –

Смежные вопросы