Anzeigefeld verringert

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

Guten Abend,
ich versuche gerade ohne Erfolg bei dem Interface eine Zeile weiter herunter(unter den Buttons)
Mein Problem dabei ist nämlich, dass es ab einen bestimmten Punkt nicht mehr angezeigt wird. Diese Linie kann man sehen wenn man

Code: Alles auswählen

root.option_add("*background", "white")
zu

Code: Alles auswählen

root.option_add("*background", "grey")
ändert. Ebenfalls würde mich Interessieren, wie man diese Linie entfernt, dass man einfach so weiter darunter Buttons, Labels usw. einsetzen kann

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)


#---------------------------------------------------------------------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 über jede Hilfe
LG
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Budzi93: Es macht keinen Sinn immer neue Themen aufzumachen wo die Antwort ist kein `place()` zu verwenden. Denn diese ”Linie” ist das Ende des `Frame` und wenn man da mit anderen Mitteln als `place()` neue Elemente hinzufügt, dann ändert sich auch die Grösse des Frames und das Problem das Du denkst zu haben, gibt es nicht.

Und auch hier nochmal: Auch `geometry()` ist keine gute Idee. Der Hilfe-Button hat bei mir deswegen nicht genug Platz und wird rechts ”abgeschnitten”.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Budzi93
User
Beiträge: 6
Registriert: Dienstag 23. April 2019, 14:38

__blackjack__ hat geschrieben: Mittwoch 24. April 2019, 18:13 @Budzi93: Es macht keinen Sinn immer neue Themen aufzumachen wo die Antwort ist kein `place()` zu verwenden. Denn diese ”Linie” ist das Ende des `Frame` und wenn man da mit anderen Mitteln als `place()` neue Elemente hinzufügt, dann ändert sich auch die Grösse des Frames und das Problem das Du denkst zu haben, gibt es nicht.

Und auch hier nochmal: Auch `geometry()` ist keine gute Idee. Der Hilfe-Button hat bei mir deswegen nicht genug Platz und wird rechts ”abgeschnitten”.
danke für ihre Antwort, ich kann ihren Lösungsschritten leider nicht ganz folgen, können sie mir es anhand meines Beispiels zeigen?
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Budzi93: Mehr Frames und da dann halt pro Frame mit `pack()` oder mit `grid` arbeiten. Es gibt jetzt beim `Interface` bereits das Problem das implizit TOP und explizit LEFT im gleichen Frame verwendet wird. Das kann zu komischen Ergebnissen führen. Also sollten die Buttons sowieso in einem eigenen Frame stecken der nach der Überschrift per `pack()` und TOP gepackt wird. Und danach kann man genau so weitere Widgets, direkt oder in einem weiteren Container wie Frame darunter gepackt werden.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten