Python 3.x Python Tkinter。如何在固定大小的框架中居中放置标签?

Python 3.x Python Tkinter。如何在固定大小的框架中居中放置标签?,python-3.x,tkinter,Python 3.x,Tkinter,如上所述,我希望一些元素居中(宽度方向)。窗户应该修好。 我以前尝试过使用列,但我不太明白如何将网格指定给框架并使标签遵守它 import tkinter as tk from PIL import Image, ImageTk root = tk.Tk() root.title("Programm zum setzen von Bildpunkten") root.geometry("400x400") root.resizable(width=F

如上所述,我希望一些元素居中(宽度方向)。窗户应该修好。 我以前尝试过使用列,但我不太明白如何将网格指定给框架并使标签遵守它

import tkinter as tk
from PIL import Image, ImageTk

root = tk.Tk()


root.title("Programm zum setzen von Bildpunkten")
root.geometry("400x400")
root.resizable(width=False,height=False)



#Frames
Frame_1 = tk.Frame(master=root,bg="#c4c2bb",width=400,height=40)
Frame_2 = tk.Frame(master=root,bg="#c4c2bb",width=400,height=40)
Frame_3 = tk.Frame(master=root,bg="#c4c2bb",width=400,height=280)
Frame_4 = tk.Frame(master=root,bg="#c4c2bb",width=400,height=40)

Frame_1.grid_propagate(0)
Frame_2.grid_propagate(0)
Frame_3.grid_propagate(0)
Frame_4.grid_propagate(0)


#Main Containers layout
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=2) 
root.grid_rowconfigure(1, weight=2) 
root.grid_rowconfigure(2, weight=1)
root.grid_rowconfigure(3, weight=0)

#Frame Position
Frame_1.grid(row=0,sticky="nw")
Frame_2.grid(row=1,sticky="ew")
Frame_3.grid(row=2,sticky="ew")
Frame_4.grid(row=3,sticky="new")

#Frame_1 Widgets
Start_message = tk.Label(master = Frame_1, text=Message_start,bg="#c4c2bb",fg="black")

#Frame_2 Widgets
Number_text = tk.Label(master = Frame_2, text=Number_Pictures,bg="#c4c2bb",fg="black")

#Frame_4 Widgets
#Start_button = tk.Button(master = Frame_4, text=Button_start_text,width=30,height=10,fg="white")

#Frame_1 Widget Position
Start_message.grid(row=0)
Anzahl_text.grid(row=0)

#Frame_3 Image, Dimension 200x200
Logo = Image.open("Logotest.jpg")
Logo = ImageTk.PhotoImage(Logo)
Logo_label = tk.Label(master = Frame_3,image=Logo)
Logo_label.grid(row=0)
   

root.mainloop()

与您的问题无关,但您知道如何将
master
关键字传递给所有tkinter小部件。您应该对
ImageTk.PhotoImage(Logo)
=>
ImageTk.PhotoImage(Logo,master=Frame_3)
。这样以后你就不会头疼了。@TheLizzard:我从来没有这样做过,在创建图像时,我也从来没有因为不使用
master
而头疼过。令人头痛的是,当您创建多个
Tk
@BryanOakley实例时,最好传入
master
关键字参数。您不会建议OP从
Frame_1=tk.Frame(master=root,…)
中删除
master=root
,即使它不会产生效果(除非OP创建多个
tk()
)。我认为在<>代码> Muth[/COD]关键字参数是一个约定。这就是为什么我建议大家只需输入
mater
关键字参数。