Vor dem entscheidenden Tipp noch ein paar Hinweise zum "Style":
Den * import bei Tkinter solltest du dir wieder abgewöhnen. Man lädt sich damit einen riesen Haufen in den Namensraum, vermutlich ohne zu wissen, was alles dabei ist. Außerdem kannst du bei Verwendung der Tkinter-Klassen diese gar nicht mehr als solche erkennen. Darum besser so:
Dann entsprechend statt z.B. "Label" mit "tk.Label" aufrufen.
Anstelle des Frame()-Widgets ist es üblich, eine Instanz von Tk zu erzeugen, die heißt dann häufig root. Einen separaten Frame darin brauchst du eigentlich gar nicht (das ist nur so eine Art Container).
Die Bezeichner widget und wigdet2 sind ziemlich unglücklich gewählt, weil sie nun wirklich gar keine Auskunft geben, was sich dahinter verbirgt (naja, fast keine: Ein Widget eben ...).
Ich persönlich verwende dafür nach Möglichkeit Bezeichner, die sowohl einen Information darüber enthalten, um welche Art von Widget es sich hier handelt und zusätzlich, welche Funktion/Inhalt das Widget hat. In deinem Fall - nur
ein Entry und Button - würde ich mich auf den Typ beschränken.
Und jetzt der Tipp: Entry-Widgets haben eine Methode get(), die liefert den Inhalt zurück.
Wenn man das alles berücksichtigt, dann könnte dein Code etwa so aussehen:
Code: Alles auswählen
import Tkinter as tk
def generate_pw():
# soll nachher das Passwort generieren
print entry.get()
root = tk.Tk()
tk.Label(root, text="Dieses Programm generiert ihnen ein sicheres Passwort.").pack()
tk.Label(root, text="Bitte geben Sie die Anzahl der zu verwendenen Stellen an!").pack()
entry = tk.Entry(root)
button = tk.Button(text="Generieren", command=generate_pw)
entry.pack()
button.pack()
root.mainloop()