Tkinter - 如何使Widget居中(Python)

时间:2018-06-14 21:18:48

标签: python-3.x tkinter tkinter-layout

我从Python开始使用GUI并遇到问题。 我已经为我的框架添加了小部件,但它们总是在左侧。 我从互联网上尝试了一些例子,但我没有管理它。 我试过了.place,但它对我不起作用。可以告诉我如何将小部件放在中间吗?

代码:

import tkinter as tk

def site_open(frame):
    frame.tkraise()

window = tk.Tk()

window.title('Test')
window.geometry('500x300')

StartPage = tk.Frame(window)
FirstPage = tk.Frame(window)

for frame in (StartPage, FirstPage):
    frame.grid(row=0, column=0, sticky='news')

lab = tk.Label(StartPage, text='Welcome to the Assistant').pack()
lab1 = tk.Label(StartPage, text='\n We show you helpful information about you').pack()
lab2 = tk.Label(StartPage, text='\n \n Name:').pack()
ent = tk.Entry(StartPage).pack()
but = tk.Button(StartPage, text='Press', command=lambda:site_open(FirstPage)).pack()

lab1 = tk.Label(FirstPage, text='1Page').pack()
but1 = tk.Button(FirstPage, text='Press', command=lambda:site_open(StartPage)).pack()

site_open(StartPage)
window.mainloop()

2 个答案:

答案 0 :(得分:1)

创建window后,添加:

window.columnconfigure(0, weight=1)

更多The Grid Geometry Manager

答案 1 :(得分:0)

您正在混合两个不同的布局管理器。我建议您使用The Grid Geometry Manager The Pack Geometry Manager

一旦您决定使用哪一个,就可以更轻松地帮助您:)

例如,您可以使用网格几何管理器,其中包含两行和两列,并将窗口小部件放置如下:

label1 = Label(start_page, text='Welcome to the Assistant')
# we place the label in the page as the fist element on the very left 
# and allow it to span over two columns
label1.grid(row=0, column=0, sticky='w', columnspan=2) 

button1 = Button(start_page, text='Button1', command=self.button_clicked)
button1.grid(row=1, column=0)

button2 = Button(start_page, text='Button2', command=self.button_clicked)
button2.grid(row=1, column=1)

这将导致标签位于第一行和两个按钮旁边。