Tkinter show/hide password

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MupfSpace
User
Beiträge: 169
Registriert: Montag 25. Dezember 2017, 20:26

Hallo :D
ich bin gerade dabei mit Python ein Spiel zu programmieren und bin gerade beim Login
ich möchte dass neben dem Passwort-Entry ein auge ist dass wen man es anklick zu einem durchgestrichenen auge wird und das passwort sichtbar macht.

ich bekommen dabei einen error wenn ich auf dass auge klicke. :K

hier der Error:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
    return self.func(*args)
  File "C:\Users\MupfPlay\Desktop\Mathe_Spiel\Game\Source\main.pyw", line 121, in show_hide
    show_hide_PP.configure(image = hidePP)
  File "C:\Python34\lib\tkinter\__init__.py", line 1319, in configure
    return self._configure('configure', cnf, kw)
  File "C:\Python34\lib\tkinter\__init__.py", line 1310, in _configure
    self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: image "<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=12x12 at 0x925FE80>" doesn't exist
und hier der code teil:

Code: Alles auswählen

def show_hide(self):
        global showHide_Var
        if showHide_Var == ("ICOshow"):
            show_hide_PP.configure(image = hidePP)
        else:
            show_hide_PP.configure(image = showPP)

    showPP = Image.open("../../recources/bilder/showPassPort.png")
    hidePP = Image.open("../../recources/bilder/hidePassPort.png")
    showPasswordIMG = ImageTk.PhotoImage(showPP)
    hidePasswordIMG = ImageTk.PhotoImage(hidePP)
    show_hide_PP = Label(login, image = showPasswordIMG)
    show_hide_PP.bind("<Button-1>", show_hide)
    show_hide_PP.place(x="400", y="251.75")
Danke für hilfe :roll:
Sirius3
User
Beiträge: 18266
Registriert: Sonntag 21. Oktober 2012, 17:20

@MupfSpace: vergiss dass es »global« gibt, Du scheinst ja sowieso irgendwas mit Klassen zu machen. Achnee, das `self` ist eigentlich das `event`-Argument von bind. Trotzdem, vergiss, dass es »global« gibt und mach was mit Klassen. Recources wie Bilder sollten immer relativ zu einem wie auch immer bestimmten Verzeichnis stehen, meist irgendwas relativ zu einer Python-Datei, deren Pfad man mit __file__ ermittelt. Schau welche Imagevariable Du beim Erzeugen des Labels benutzt und was Du bei »configure« versuchst.
MupfSpace
User
Beiträge: 169
Registriert: Montag 25. Dezember 2017, 20:26

Danke Schön :D
hat funktioniert
Antworten