nachdem ich einen simplen, GUI-basierten Passwordgenerator erstellt habe, möchte ich nun eine .exe und .app erstellen. Das mit der .exe habe ich in cx_Freeze gelöst. Klappt alles. Nachdem ich nun eine .app erstellen wollte, war meine erste Anlaufstelle py2app. Nach mehrfachen Versuchen gelang es mi jedoch nicht, mein Programm auszuführen, ich bekam beim öffnen immer folgenden Fehler: "<Dateiname> Error". Nun habe ich gelesen, dass man mit cx_Freeze auch eine .app erstellen kann. Wie mache ich das? Oder was mache ich bei py2app falsch? :K
Hier mein Code:
Code: Alles auswählen
from tkinter import *
import random, pyperclip, os
chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?.:,;-_#+*"
def OpenList():
os.system("start pw_list.txt")
def ClearList():
os.system("del pw_list.txt")
def generate():
length = int(length_entry.get())
password = ""
if length < 49:
for c in range(length):
password += random.choice(chars)
output_entry.delete(0, END)
output_entry.insert(END, password)
def clear():
length_entry.delete(0, END)
name_entry.delete(0, END)
output_entry.delete(0, END)
def clipboard():
print(output_entry.get)
pyperclip.copy(output_entry.get())
pyperclip.paste()
def list():
textfile = open("pw_list.txt", "a")
textfile.write(name_entry.get() + " - " + output_entry.get() + "\n")
textfile.close
root = Tk()
root.title("Password Generator")
root.resizable(0,0)
root.iconbitmap("icon.ico")
menu = Menu(root)
root.config(menu=menu)
program_menu = Menu(menu)
list_menu = Menu(menu)
menu.add_cascade(label="Program", menu=program_menu)
menu.add_cascade(label="Password List", menu=list_menu)
program_menu.add_command(label="Exit", command=root.quit)
list_menu.add_command(label="Open list", command=OpenList)
list_menu.add_command(label="Clear list", command=ClearList)
var_width1 = 50
var_width2 = 10
length_entry = Entry(root, width=var_width1, relief="solid", borderwidth=1)
name_entry = Entry(root, width=var_width1, relief="solid", borderwidth=1)
output_entry = Entry(root, width=var_width1, relief="solid", borderwidth=1)
length_clear_button = Button(root, text="Clear", command=clear, width=var_width2, relief="solid", borderwidth=1)
clipboard_button = Button(root, text="Copy", command=clipboard, width=var_width2, relief="solid", borderwidth=1)
list_button = Button(root, text="Store in list", command=list, width=var_width2, relief="solid", borderwidth=1)
generate_button = Button(root, text="Generate", command=generate, width=var_width1 + var_width2, relief="solid", borderwidth=1)
length_entry.insert(END, "password length?")
name_entry.insert(END, "password name?")
length_entry.grid(row=1, column=1)
name_entry.grid(row=2, column=1)
output_entry.grid(row=3, column=1, pady=1)
length_clear_button.grid(row=1, column=2, pady=1)
list_button.grid(row=2, column=2, pady=1)
clipboard_button.grid(row=3, column=2, pady=1)
generate_button.grid(row=4, column=1, columnspan=3, pady=1)
root.mainloop()