Seite 1 von 1

Anzeigefeld verringert

Verfasst: Mittwoch 24. April 2019, 17:18
von Budzi93
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

Re: Anzeigefeld verringert

Verfasst: Mittwoch 24. April 2019, 18:13
von __blackjack__
@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”.

Re: Anzeigefeld verringert

Verfasst: Mittwoch 24. April 2019, 18:16
von Budzi93
__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?

Re: Anzeigefeld verringert

Verfasst: Mittwoch 24. April 2019, 18:54
von __blackjack__
@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.