Tkinter - 如何将小部件居中 (Python)
Tkinter - How to center a Widget (Python)
我在 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()
创建 window
后,添加:
window.columnconfigure(0, weight=1)
您正在混合使用两种不同的布局管理器。我建议你要么使用 The Grid Geometry Manager or 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)
这将导致第一行和两个按钮下方的标签彼此相邻。
我在 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()
创建 window
后,添加:
window.columnconfigure(0, weight=1)
您正在混合使用两种不同的布局管理器。我建议你要么使用 The Grid Geometry Manager or 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)
这将导致第一行和两个按钮下方的标签彼此相邻。