Ich versuche, ein großes Etikett am oberen Rand des Fensters in der Mitte zu platzieren, dann 3 Optionsmenüs, die gleichmäßig darunter verteilt sind. Ich kann die Menüs nicht über das gesamte Fenster erstrecken. Ich bin mir nicht sicher, ob das, was ich falsch mache, istWie positioniert man Etiketten mit der Grid-Methode in Python Tkinter?
root.geometry("800x600")
an der Unterseite. Alles ist gleichmäßig verteilt, aber es wird alles auf die linke Seite des Fensters geschoben, anstatt das Ganze zu füllen. Ich bin nicht zum nächsten Teil gekommen, wo ich verbindliche Funktionen sein werde, die Textabsätze unter jedem der Menüs anzeigen werden, weshalb ich das Fenster so groß haben möchte.
hier ist mein Code:
from tkinter import *
from tkinter import messagebox
root=Tk()
topFrame=Frame(root)
bottomFrame=Frame(root)
#The first label
lbl=Label(root,text="Pick a Decade",bg="turquoise",fg="hot pink",font= ("Times","40","bold italic"))
lbl.grid(row=1,column=1)
#Functions
def fifties(s):
if s=="Intro":
lbl=Label(root,text="1950's intro",bg="turquoise")
lbl.grid(column=1)
if s=="Political":
lbl=Label(root,text="1950's politcal",bg="turquoise")
lbl.grid(column=1)
if s=="Economic":
lbl=Label(root,text="1950's economic",bg="turquoise")
lbl.grid(column=1)
if s=="Social":
lbl=Label(root,text="1950's social",bg="turquoise")
lbl.grid(column=1)
if s=="Technological":
lbl=Label(root,text="1950's technological",bg="turquoise")
lbl.grid(column=1)
if s=="Aesthetic":
lbl=Label(root,text="1950's aesthetic",bg="turquoise")
lbl.grid(column=1)
def sixties(s):
if s=="Intro":
lbl=Label(root,text="1960's intro")
lbl.grid(column=1,row=3)
if s=="Political":
lbl=Label(root,text="1960's politcal")
lbl.grid(column=1,row=3)
if s=="Economic":
lbl=Label(root,text="1960's economic")
lbl.grid(column=1,row=3)
if s=="Social":
lbl=Label(root,text="1960's social")
lbl.grid(column=1,row=3)
if s=="Technological":
lbl=Label(root,text="1960's technological")
lbl.grid(column=1,row=3)
if s=="Aesthetic":
lbl=Label(root,text="1960's aesthetic")
lbl.grid(column=1,row=3)
def seventies(s):
if s=="Intro":
lbl=Label(root,text="1970's intro")
lbl.grid(column=2,row=3)
if s=="Political":
lbl=Label(root,text="1970's political")
lbl.grid(column=2,row=3)
if s=="Economic":
lbl=Label(root,text="1970's economic")
lbl.grid(column=2,row=3)
if s=="Social":
lbl=Label(root,text="1970's social")
lbl.grid(column=2,row=3)
if s=="Technological":
lbl=Label(root,text="1970's technological")
lbl.grid(column=2,row=3)
if s=="Aesthetic":
lbl=Label(root,text="1970's aesthetic")
lbl.grid(column=2,row=3)
#Menus
v=StringVar(root)
v.set("1950's")
a=OptionMenu(root,v,"Intro","Political","Economic","Social","Technological","Aesthetic",command=fifties)
a.grid(column=0,row=2)
v=StringVar(root)
v.set("1960's")
a=OptionMenu(root,v,"Intro","Political","Economic","Social","Technological","Aesthetic",command=sixties)
a.grid(column=1,row=2)
v=StringVar(root)
v.set("1970's")
a=OptionMenu(root,v,"Intro","Political","Economic","Social","Technological","Aesthetic",command=seventies)
a.grid(column=2,row=2)
#Root
root.configure(background="turquoise")
root.geometry("800x600")
root.mainloop()
Die Etiketten in den Funktionen, die „1950 soziale“ etc. etc. sein werden, die großen Ziffern sagen.
[Das Tkinter Grid Geometry-Manager] (http://effbot.org/tkinterbook/grid.htm) – furas
als Standard leere Zellen hat keine Größe. Und Widgets füllen nicht das volle Fenster: siehe [align in grid() und pack()] (https://github.com/furas/python-examples/tree/master/tkinter/align-grid-pack) – furas
Ihr Eindruck scheint gebrochen zu sein. –