forked from OpenBMB/ChatDev
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
92 lines (92 loc) · 4.41 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
'''
This is the main file for the random password generator app.
'''
import tkinter as tk
from tkinter import messagebox
import string
import random
from password_generator import PasswordGenerator
from password_strength_checker import PasswordStrengthChecker
class RandomPasswordGeneratorApp:
def __init__(self):
self.root = tk.Tk()
self.root.title("Random Password Generator")
self.password_generator = PasswordGenerator()
self.password_strength_checker = PasswordStrengthChecker()
self.create_widgets()
def create_widgets(self):
# Length Label and Entry
length_label = tk.Label(self.root, text="Password Length:")
length_label.pack()
self.length_entry = tk.Entry(self.root)
self.length_entry.pack()
# Complexity Label and Checkbuttons
complexity_label = tk.Label(self.root, text="Password Complexity:")
complexity_label.pack()
self.uppercase_var = tk.IntVar()
self.uppercase_checkbutton = tk.Checkbutton(self.root, text="Uppercase Letters", variable=self.uppercase_var)
self.uppercase_checkbutton.pack()
self.lowercase_var = tk.IntVar()
self.lowercase_checkbutton = tk.Checkbutton(self.root, text="Lowercase Letters", variable=self.lowercase_var)
self.lowercase_checkbutton.pack()
self.numbers_var = tk.IntVar()
self.numbers_checkbutton = tk.Checkbutton(self.root, text="Numbers", variable=self.numbers_var)
self.numbers_checkbutton.pack()
self.special_chars_var = tk.IntVar()
self.special_chars_checkbutton = tk.Checkbutton(self.root, text="Special Characters", variable=self.special_chars_var)
self.special_chars_checkbutton.pack()
# Excluded Characters Label and Entry
excluded_chars_label = tk.Label(self.root, text="Excluded Characters:")
excluded_chars_label.pack()
self.excluded_chars_entry = tk.Entry(self.root)
self.excluded_chars_entry.pack()
# Number of Passwords Label and Entry
num_passwords_label = tk.Label(self.root, text="Number of Passwords:")
num_passwords_label.pack()
self.num_passwords_entry = tk.Entry(self.root)
self.num_passwords_entry.pack()
# Generate Passwords Button
generate_button = tk.Button(self.root, text="Generate Passwords", command=self.generate_passwords)
generate_button.pack()
# Generated Passwords Label and Text
generated_passwords_label = tk.Label(self.root, text="Generated Passwords:")
generated_passwords_label.pack()
self.generated_passwords_text = tk.Text(self.root)
self.generated_passwords_text.pack()
# Password Strength Label and Entry
password_strength_label = tk.Label(self.root, text="Check Password Strength:")
password_strength_label.pack()
self.password_strength_entry = tk.Entry(self.root)
self.password_strength_entry.pack()
# Check Strength Button
check_strength_button = tk.Button(self.root, text="Check Strength", command=self.check_strength)
check_strength_button.pack()
def generate_passwords(self):
length = int(self.length_entry.get())
complexity = []
if self.uppercase_var.get():
complexity.append("uppercase")
if self.lowercase_var.get():
complexity.append("lowercase")
if self.numbers_var.get():
complexity.append("numbers")
if self.special_chars_var.get():
complexity.append("special_chars")
excluded_chars = self.excluded_chars_entry.get()
num_passwords = int(self.num_passwords_entry.get())
if length < len(complexity):
messagebox.showerror("Invalid Input", "Password length should be greater than or equal to the complexity requirements.")
return
passwords = self.password_generator.generate_passwords(length, complexity, excluded_chars, num_passwords)
self.generated_passwords_text.delete(1.0, tk.END)
for password in passwords:
self.generated_passwords_text.insert(tk.END, password + "\n")
def check_strength(self):
password = self.password_strength_entry.get()
strength = self.password_strength_checker.check_strength(password)
messagebox.showinfo("Password Strength", strength)
def run(self):
self.root.mainloop()
if __name__ == "__main__":
app = RandomPasswordGeneratorApp()
app.run()