Seite 1 von 1

Passwort anzeigen lassen

Verfasst: Freitag 12. Februar 2021, 12:41
von adam
Hallo,
ich versuche gerade als Neuling ein Anmelde-Interface zu erstellen und dabei hab ich eingestellt, dass alles im Eingabefeld des Passwortes in "*" angezeigt wird. Nun will ich eine Schaltfläche hinzufügen, die das Passwort "normal" anzeigen lässt.

So sieht der Code momentan aus:

Code: Alles auswählen

eingabefeld_wert_p = tk.StringVar()
eingabefeld_p = tk.Entry(root, textvariable=eingabefeld_wert_p, show="*", font=("times", 13))
eingabefeld_p.place(x="100", y="180", width="200", height="30")
eingabefeld_wert_p.set('Passwort')
passanzeigen = tk.Button(root, text="Password anzeigen", comman=anzeigen_p).place(x="100", y="215")
Die Funktion dazu:

Code: Alles auswählen

def anzeigen_p():
    global eingabefeld_p
    eingabefeld_p = tk.Entry(show=str)
1. Wie muss die Funktion dazu aussehen?
2. Ich möchte keinen normalen Button sondern ein Kästchen, das ein Kreuz hat wenn es aktiviert ist. Wie mach ich das? Brauch ich ein bestimmtes Modul?

Vielen Dank im Voraus!!

Ps: Hab den Rechtschreibfehler "comman" schon entdeckt und geändert.

Re: Passwort anzeigen lassen

Verfasst: Freitag 12. Februar 2021, 13:29
von Sirius3
Du darfst kein neues Eingabefeld erzeugen, sondern mußt das bestehende neu konfigurieren.
Globale Variablen sollte man nicht benutzen. Alles was eine Funktion braucht, bekommt sie über ihre Argumente. Bei command= hilft hierbei functools.partial.
Warum haben alle Variablen das Postfix _p? Wenn das Passwort heißen soll, warum schreibst Du es dann nicht aus? Dann muß man auch nicht rätseln.
`place` sollte man nicht benutzen, weil das bei unterschiedlichen Bildschirmauflösungen zu Problemen führen kann. Benutze grid oder pack.
`passanzeigen` hat den Wert None, ist also ziemlich überflüssig.

Code: Alles auswählen

import tkinter as tk
from functools import partial

def anzeigen(entry):
    entry['show'] = ""

def main():
    root = tk.Tk()
    password = tk.StringVar(root, "Passwort")
    password_entry = tk.Entry(root, textvariable=password, show="*", font=("times", 13))
    password_entry.pack()
    tk.Button(root, text="Password anzeigen", comman=partial(anzeigen, password_entry)).pack()
    root.mainloop()

if __name__ == "__main__":
    main()

Re: Passwort anzeigen lassen

Verfasst: Freitag 12. Februar 2021, 14:51
von __blackjack__
Um noch das 2. aus der Frage zu beantworten: das Kästchen mit Kreuzchen/Haken bekommt man mit einem `Checkbutton`:

Code: Alles auswählen

#!/usr/bin/env python3
import tkinter as tk


def main():
    root = tk.Tk()
    password_var = tk.StringVar(value="Passwort")
    show_var = tk.StringVar(value="*")

    password_entry = tk.Entry(
        root, textvariable=password_var, show=show_var.get()
    )
    password_entry.pack()
    tk.Checkbutton(
        root,
        text="Password anzeigen",
        variable=show_var,
        onvalue="",
        offvalue="*",
        command=lambda: password_entry.config(show=show_var.get()),
    ).pack()
    root.mainloop()


if __name__ == "__main__":
    main()