@Der_Scripter: Du solltest Dir dringend in einem Anfängertutorial mal anschauen, wie man Klassen definiert. Das was Du da geschrieben hast, sind nur ein paar Funktionen, die zufällig ein einem Klassennamensraum stehen und `main` ist seltsam benannt.
Python2 sollte für neue Projekte nicht mehr verwendet werden, steig auf Python3 um.
Sternchenimporte sind böse™, weil man sich damit unkontrolliert hunderte von Namen in seinen eigenen Namensraum schaufelt.
`test123` sind schlechte Variablennamen.
Als Startpunkt könnte das so aussehen:
Code: Alles auswählen
import Tkinter as tk
from functools import partial
def update(test, event):
test.delete(0, tk.END)
def main():
window = tk.Tk()
test = tk.Entry(window, width=36, relief=tk.FLAT)
test.insert(tk.END, "Benutzername")
test.pack()
test2 = tk.Entry(window, width=36, show="•", relief=tk.FLAT)
test2.pack()
test3 = tk.Button(window, text="weiter", relief=tk.FLAT, bd="0", bg="#174F50", fg="#174F50")
test3.pack()
test.bind("<FocusIn>", partial(update, test))
window.mainloop()
if __name__ == '__main__':
main()
Etwas ausgefeilter:
Code: Alles auswählen
import Tkinter as tk
from functools import partial
def focus_in(entry, event):
if entry['fg'] == 'gray':
entry.label = entry.get()
entry.delete(0, tk.END)
entry['fg'] = 'black'
if entry.label == "Passwort":
entry['show'] = "•"
def focus_out(entry, event):
if entry.get() == "":
entry['fg'] = 'gray'
entry.insert(tk.END, entry.label)
entry['show'] = ''
def main():
window = tk.Tk()
benutzername = tk.Entry(window, width=36, relief=tk.FLAT, fg="gray")
benutzername.insert(tk.END, "Benutzername")
benutzername.bind("<FocusIn>", partial(focus_in, benutzername))
benutzername.bind("<FocusOut>", partial(focus_out, benutzername))
benutzername.pack()
passwort = tk.Entry(window, width=36, relief=tk.FLAT, fg="gray")
passwort.insert(tk.END, "Passwort")
passwort.bind("<FocusIn>", partial(focus_in, passwort))
passwort.bind("<FocusOut>", partial(focus_out, passwort))
passwort.pack()
weiter = tk.Button(window, text="weiter", relief=tk.FLAT, bd="0", bg="#174F50", fg="#174F50")
weiter.pack()
window.mainloop()
if __name__ == '__main__':
main()
Besser dann mit eigener Klasse:
Code: Alles auswählen
import Tkinter as tk
class ExplainedEntry(tk.Entry):
def __init__(self, *args, **kw):
self.label = kw.pop('label', '')
self.show = kw.pop('show', '')
kw.setdefault('fg', 'gray')
tk.Entry.__init__(self, *args, **kw)
self.insert(tk.END, self.label)
self.bind("<FocusIn>", self.focus_in)
self.bind("<FocusOut>", self.focus_out)
def focus_in(self, event):
if self['fg'] == 'gray':
self.delete(0, tk.END)
self['fg'] = 'black'
self['show'] = self.show
def focus_out(self, event):
if self.get() == "":
self['fg'] = 'gray'
self.insert(tk.END, self.label)
self['show'] = ''
def main():
window = tk.Tk()
benutzername = ExplainedEntry(window, width=36, relief=tk.FLAT, label="Benutzername")
benutzername.pack()
passwort = ExplainedEntry(window, width=36, relief=tk.FLAT, label="Passwort", show="*")
passwort.pack()
weiter = tk.Button(window, text="weiter", relief=tk.FLAT, bd="0", bg="#174F50", fg="#174F50")
weiter.pack()
window.mainloop()
if __name__ == '__main__':
main()