Checkbox Passwort anzeigen/ausblenden

Fragen zu Tkinter.
Antworten
rockst4rr277
User
Beiträge: 7
Registriert: Sonntag 18. Oktober 2020, 13:46

Hallo,

ich bastel grad an einer checkbox die in meiner GUI die Entry fürs Passwort zu Sternchen:"****" macht.
Um die Funktionalität der "def" zu überprüfen habe ich "print" befehle hinzugefügt.
die print befehle werden ausgeführt, leider wird die pw anzeige nicht geändert.

kann mir jmd sagen was ich falsch mache?
Vielen Dank für eure Hilfe.

PS: Ich bin noob, also bitte sehr einfach formulieren, danke!!!! :D
---------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------

from tkinter import *
window = Tk()


def wechselanzeige():
if (x.get()==1):
entry_pw = Entry(window, show="")
print("xxx")
else:
entry_pw = Entry(show="*")
print("yyy")


label_pw = Label(text="und hier dein Passwort:")
entry_pw = Entry(window,show="*",width=50)
label_pw.pack()
entry_pw.pack()


x = IntVar()
checkbox = Checkbutton(window, text='Passwort anzeigen', variable=x, onvalue=1, offvalue=0, command=wechselanzeige)
checkbox.pack()


window.mainloop()
Sirius3
User
Beiträge: 18289
Registriert: Sonntag 21. Oktober 2012, 17:20

Benutze keine *-Importe und keine globalen Variablen.
`x` sagt gar nichts über den Inhalt der Variable. Benutze aussagekräftige Namen.
Du willst keine neuen Entry-Objekte erzeugen, sondern ein bestehendes verändern.

Code: Alles auswählen

import tkinter as tk
from functools import partial

def wechselanzeige(password_entry, show_password):
    password_entry['show'] = "" if show_password.get() else "*"

def main():
    window = tk.Tk()
    show_password = tk.IntVar(window)
    tk.Label(window, text="und hier dein Passwort:").pack()
    password_entry = tk.Entry(window, show="*", width=50)
    password_entry.pack()
    tk.Checkbutton(window, text='Passwort anzeigen', variable=show_password, onvalue=1, offvalue=0,
        command=partial(wechselanzeige, password_entry, show_password)).pack()
    window.mainloop()

if __name__ == '__main__':
    main()
rockst4rr277
User
Beiträge: 7
Registriert: Sonntag 18. Oktober 2020, 13:46

Danke für deine Hilfe :)
Antworten