Label wird nur zur Hälfte angezeigt

Fragen zu Tkinter.
Antworten
Budzi93
User
Beiträge: 6
Registriert: Dienstag 23. April 2019, 14:38

Guten Tag,
Ich habe versucht ein Label einzufügen, was aber nur halb sichtbar war

Code: Alles auswählen


from tkinter import *

def raise_frame(frame):
    frame.tkraise()


root = Tk()
root.geometry("1440x810")
root.title("Interface")
root.configure(background="white")
root.option_add("*background", "white")

Interface = Frame(root)
Mitarbeiter = Frame(root)
Statistiken = Frame(root)
Preisliste = Frame(root)
Einstellungen = Frame(root)
Hilfe = Frame(root)
Mhinzufügen = Frame(root)


for frame in (Interface, Mitarbeiter, Statistiken, Preisliste, Einstellungen, Hilfe, Mhinzufügen):
    frame.grid(row=0, column=0, sticky="news")


#----------------------------------------------------------------------Interface----------------------------------------------------------------------#

x = Label(Interface, text="Interface", anchor="center", font="Arial 20 bold", bg="white")
x.pack()
w1 = Button(Interface, text="Mitarbeiter", font="Arial 9 bold", bg="grey", fg="white", width=15, height=2, command=lambda:raise_frame(Mitarbeiter))
w1.pack(padx=50, pady=20, side=LEFT)
w2 = Button(Interface, text="Statistiken", font="Arial 9 bold", bg="grey", fg="white", width=15, height=2, command=lambda:raise_frame(Statistiken))
w2.pack(padx=110, pady=20, side=LEFT)
w3 = Button(Interface, text="Preisliste", font="Arial 9 bold", bg="grey", fg="white", width=15, height=2, command= lambda:raise_frame(Preisliste))
w3.pack(padx=110, pady=20, side=LEFT)
w4 = Button(Interface, text="Einstellungen", font="Arial 9 bold", bg="grey", fg="white", width=15, height=2, command= lambda:raise_frame(Einstellungen))
w4.pack(padx=110, pady=20, side=LEFT)
w5 = Button(Interface, text="Hilfe", font="Arial 9 bold", bg="grey", fg="white", width=15, height=2, command=lambda:raise_frame(Hilfe))
w5.pack(padx=50, pady=20, side=LEFT)
x1 = Label(Interface, text="Copyright by Budzi 2019", font="Arial 20 bold", bg="white")
x1.place(x=100, y=100)


#---------------------------------------------------------------------Mitarbeiter---------------------------------------------------------------------#

Button(Mitarbeiter, text="<<", font="Arial 12 bold", anchor="nw", command=lambda:raise_frame(Interface)).pack(side=LEFT, pady=0)
Button(Mitarbeiter, text="+", font="Arial 12 bold", anchor="nw", command=lambda:raise_frame(Mhinzufügen)).pack(side=LEFT, padx=5)
Label(Mitarbeiter, text="Mitarbeiter", anchor="center", font="Arial 20 bold").pack()
Button(Mhinzufügen, text="<<", font="Arial 12 bold", anchor="nw", command=lambda:raise_frame(Mitarbeiter)).pack(side=LEFT, pady=0)
Label(Mhinzufügen, text="Mitarbeiterprofil hinzufügen", anchor="center", font="Arial 20 bold").pack()
Nachname = Label(Mhinzufügen, text="Nachname:", anchor="nw", font="Arial 12").pack(side=LEFT, padx=50)
NachnameEntry = Entry(Mhinzufügen, font="Arial 12").pack(side=LEFT, padx=50)
Vorname = Label(Mhinzufügen, text="Vorname:", anchor="sw", font="Arial 12").pack(side=LEFT, padx=50)
VornameEntry = Entry(Mhinzufügen, font="Arial 12").pack(side=LEFT, padx=50)
ZweiterVorname = Label(Mhinzufügen, text="2. Vorname:", anchor="sw", font="Arial 12").pack(side=LEFT, padx=50)
ZweiterVornameEntry = Entry(Mhinzufügen, font="Arial 12").pack(side=LEFT, padx=50)




#---------------------------------------------------------------------Statistiken---------------------------------------------------------------------#

#---------------------------------------------------------------------Preisliste----------------------------------------------------------------------#

#--------------------------------------------------------------------Einstellungen--------------------------------------------------------------------#

#------------------------------------------------------------------------Hilfe------------------------------------------------------------------------#
raise_frame(Interface)
root.mainloop()

Ich freue mich jetzt schon einmal über jede Hilfe
LG
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Budzi93: Kein `place()` verwenden und kein `geometry()`, sondern die Layoutmanager dafür Sorge tragen lassen das alles genug Platz hat.

Ansonsten sieht das schon jetzt unübersichtlich aus. Sternchen-Import und Programm auf Modulebene sind keine gute Idee. Für eine GUI kommt man um objektorientierte Programmierung nicht herum. Ich sehe da jetzt schon Code-Wiederholgen bei den einzelnen Seiten, die die „<<“-Schaltfläche die Du ja wahrscheinlich auf jeder Unterseite haben wirst.

Und mal so nebenbei: Tut es nicht auch ein `ttk.Notebook`? Muss man das Rad noch einmal selbst erfinden?

Weisser Hintergrund ist ungünstig wenn Eingabefelder auch weiss sind. Auf den Rahmen um die würde ich mich nicht verlassen. Überhaupt sollte man an den GUI-Einstellungen nicht grundlos rumdrehen. Wenn der Benutzer weisse Hintergründe mag, kann er die sich ja einstellen. Wenn er die nicht mag, ist das jetzt in Deinem Programm kodiert.

Noch wichtiger sind da auch die Schriftgrössen und Schriften, daran würde ich in absoluten Zahlen gar nichts machen. Was ist mit Sehbehinderten? Was ist mit sehr hohen oder niedrigen Auflösungen? Schriftgrössen würde ich nur relativ zur vom Benutzer eingestellten Grundgrösse ändern.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten