OK l30n100
Hier dein Skript mit deiner Konfiguration anders zusammengesetzt. Die Bilder sollten jetzt im
Hauptfenster und im
Auswahlfenster angezeigt werden. Beim Aufruf des
Loginfensters wird das
Hauptfenster unsichtbar. Beim Abbruch des
Logins wird das
Hauptfenster wieder sichtbar. Bei einem korrekten Login wird das
Loginfenster unsichtbar und das
Auswahlfenster öffnet. Beim Abmelden aus dem
Auswahlfenster schliesst das
Auswahlfenster und das
Hauptfenster wird wieder sichtbar und ist bereit für einen neuen Login. Aus den Klassen
LoginWindow und
HeaderMenuWindow (Auswahlfenster) können mittels einer Referenz der Klasse
MainWindow deren Methoden aufgerufen werden. Bitte teste und studiere das folgende Skript:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tkinter
#Kopfrechen - Auswahlmenü
class HeadMenuWindow:
def __init__(self, mainwindow):
# Referenz der MainWindow-Klasse
self.mainwindow = mainwindow
#Standard
self.headmenu = tkinter.Toplevel()
self.headmenu.title("Auswahl")
self.headmenu.geometry("1000x580")
self.headmenu.iconbitmap("F:\\Python\\Projekte\\Fiete Pauker\\Fiete Pauker\\Startseite\\Icon.ico")
#Titelbild
self.image = tkinter.PhotoImage(file="F:\\Python\\Projekte\\Fiete Pauker\\Fiete Pauker\\Kopfrechen\\Kopfrechen Menu(neu).png")
self.head = tkinter.Label(self.headmenu)
self.head.pack()
self.head["image"] = self.image
#Angemeldet als
self.login_as = tkinter.Label(self.headmenu, text = "...")
self.login_as["fg"] = "#000000"
self.login_as["bg"] = "#FFFFFF"
self.login_as["font"] = "Arial 15"
self.login_as.place(rely = 0.33, relx = 0.83)
#Abmelden
self.logout = tkinter.Button(self.headmenu, text = "Abmelden",
command=self.abmelden)
self.logout["font"] = "Arial 15 bold"
self.logout["relief"] = "flat"
self.logout["bg"] = "#D1D1D1"
self.logout["fg"] = "#FFFFFF"
self.logout["height"] = 1
self.logout["width"] = 12
self.logout.place(rely = 0.912, relx = 0.834)
#2
self.result = tkinter.Button(self.headmenu, text = "...")
self.result["font"] = "Arial 15 bold"
self.result["relief"] = "flat"
self.result["bg"] = "#ff0000"
self.result["fg"] = "#FFFFFF"
self.result["height"] = 7
self.result["width"] = 14
self.result.place(rely = 0.27, relx = 0.05)
#1
self.quad = tkinter.Button(self.headmenu, text = "...")
self.quad["relief"] = "flat"
self.quad["height"] = 2
self.quad["width"] = 16
self.quad["fg"] = "#FFFFFF"
self.quad["bg"] = "#ffe500"
self.quad["font"] = "Arial 15 bold"
self.quad.place(rely = 0.82, relx = 0.054)
def abmelden(self):
self.headmenu.destroy()
# Hier wird die Methode 'auswahl_abmelden' der MainWindow-Klasse
# aufgerufen mittels der Referenz der MainWindow-Klasse
# (self.mainwindow)
self.mainwindow.auswahl_abmelden()
class LogInWindow:
def __init__(self, mainwindow):
# Referenz der MainWindow-Klasse
self.mainwindow = mainwindow
self.login = tkinter.Toplevel()
self.login.title("Anmeldung")
self.login.geometry("261x130")
self.login.iconbitmap("F:\\Python\\Projekte\\Fiete Pauker\\Fiete Pauker\\Startseite\\Icon.ico")
#Widgets
self.logintxt1 = tkinter.Label(self.login, text = "Bitte melden Sie sich an")
self.logintxt1["font"] = "Arial 10 bold"
self.logintxt1.place(relx = 0.5, y = 6, anchor = "n")
self.logintxt2 = tkinter.Label(self.login, text = "Benutzername:")
self.logintxt2["font"] = "Arial 10"
self.logintxt2.place(x = 10, y = 30, anchor = "nw")
self.e1 = tkinter.Entry(self.login)
self.e1.place(x = 120, y = 33, anchor = "nw")
self.logintxt3 = tkinter.Label(self.login, text = "Passwort:")
self.logintxt3["font"] = "Arial 10"
self.logintxt3.place(x = 10, y = 60, anchor = "nw")
self.e2 = tkinter.Entry(self.login, show = "*")
self.e2.place(x = 120, y = 60, anchor = "nw")
self.abbruch_button = tkinter.Button(self.login, text = "Abbruch",
command=self.abbruch)
self.abbruch_button.place(x = 188, y = 90, anchor = "nw")
self.los = tkinter.Button(self.login, text = "Login", command=self.pwkopf)
self.los.place(x = 135, y = 90, anchor = "nw")
self.verweigern = tkinter.Label(self.login)
self.verweigern.place(x = 14, y = 91)
def pwkopf(self):
self.eingabe = self.e2.get() #Passwort
self.eingabe1 = self.e1.get() #Nutzername
if self.eingabe == "123" and self.eingabe1 == "123":
self.login.destroy()
# Hier wird die Methode 'login_ok' der MainWindow-Klasse aufgerufen
# mittels der Referenz der MainWindow-Klasse (self.mainwindow)
self.mainwindow.login_ok()
else:
self.verweigern["text"] = "Zugang verweigert!"
self.verweigern["font"] = "Arial 10"
self.verweigern["fg"] = "#FF0000"
#Extras
def abbruch(self):
self.login.destroy()
# Hier wird die Methode 'login_abbruch' der MainWindow-Klasse aufgerufen
# mittels der Referenz der MainWindow-Klasse (self.mainwindow)
self.mainwindow.login_abbruch()
class MainWindow:
def __init__(self): #, menu):
# Haupfenster
self.main = tkinter.Tk()
self.main.geometry("1000x580")
# Window Icon Set
self.main.iconbitmap("F:\\Python\\Projekte\\Fiete Pauker\\Fiete Pauker\\Startseite\\Icon.ico")
self.main.title("Fiete Pauker")
# Titelbild
self.head = tkinter.Label(self.main)
self.im = tkinter.PhotoImage(file="F:\\Python\\Projekte\\Fiete Pauker\\Fiete Pauker\\Startseite\\Startseite(klein).png")
self.head["image"] = self.im
self.head.pack()
# Begrüßungstext
self.hallo = tkinter.Label(self.main,
text = "Hallo\nmein Name ist Fiete P..", font="Arial 20")
self.hallo.pack()
self.meister = tkinter.Label(self.main, text = "...!", font="Arial 30")
self.meister.pack()
#Button 1
self.kopf = tkinter.Button(self.main, text = "Button 1",
command = self.loginwindow)
self.kopf["bg"] = "#14ADA0"
self.kopf["fg"] = "#FFFFFF"
self.kopf["relief"] = "flat"
self.kopf["height"] = 3
self.kopf["width"] = 29
self.kopf["font"] = "Arial 15 bold"
self.kopf.pack(padx = 70, pady = 20, side = "left")
#Button 2
self.blatt = tkinter.Button(self.main, text = "Button 2")
self.blatt["bg"] = "#1894CE"
self.blatt["fg"] = "#FFFFFF"
self.blatt["relief"] = "flat"
self.blatt["height"] = 3
self.blatt["width"] = 29
self.blatt["font"] = "Arial 15 bold"
self.blatt.pack(padx = 70, pady = 20, side = "right")
def loginwindow(self):
print("Hier started der Login")
# Mache das Hauptfenster unsichtbar
self.main.withdraw()
# Öffne das Loginfenster
self.login_window = LogInWindow(self)
def login_ok(self):
print("Der Login war korrekt. Hier geht es weiter")
# Öffne das Auswahlfenster
self.header_menu_window = HeadMenuWindow(self)
def login_abbruch(self):
print('Der Login wurde abgebrochen')
# Mache das Hauptfenster wieder sichtbar
self.main.deiconify()
def auswahl_abmelden(self):
print('Das Fenster mit der Auswahl wurde geschlossen')
# Mache das Hauptfenster wieder sichtbar
self.main.deiconify()
startseite = MainWindow()
startseite.main.mainloop()
Gruss wuf