【发布时间】:2021-09-03 06:02:55
【问题描述】:
我想在 Tkinter 创建的窗口中居中对齐我的所有小部件。我所有的小部件都使用网格几何系统。我已经尝试过列和行权重,但它们不适用于我没有明确设置的行和列。我还尝试将整个窗口包装在一个框架中并使用 grid(sticky=NSEW) 但它没有任何区别。对于我的用例,我有超过 50 行/列,我不想对它们中的每一个运行权重设置。 这是我目前所拥有的:
root = Tk()
root.minsize(500, 100)
root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)
root.rowconfigure(2, weight=1)
root.columnconfigure(2, weight=1)
root.title('123')
root.iconbitmap(get_res_path('icon.ico'))
status_bar = LabelFrame(root, bd=1, relief=SUNKEN)
status_bar.grid(row=1, column=0, sticky=EW)
status_bar.rowconfigure(1, weight=1)
status_bar.columnconfigure(1, weight=1)
testing_text = Label(status_bar, text='', anchor=W)
testing_text.grid(row=0, column=0, sticky=W)
status_text = Label(status_bar, text='Initializing', anchor=E)
status_text.grid(row=0, column=1, sticky=E)
ver_msg = Label(root, text='123')
ver_msg.grid(row=0, column=0)
Frame(root).pack()
我希望窗口中的每个元素(文本、输入框和按钮)都位于窗口的中间,如果我将窗口拖得更大,它能够自行调整以保持在中间.
我看到了很多问题,但没有一个给我一个有效的答案。
【问题讨论】:
-
也许把所有东西都放在一个框架内,然后在框架上使用
pack()可能会起作用 -
_tkinter.TclError: cannot use geometry manager grid inside 。已经有由 pack 管理的 slave
-
是的,发布一些代码,这样我就可以知道这里发生了什么
-
'root = Tk() root.minsize(500, 100) root.rowconfigure(0, weight=1) root.columnconfigure(0, weight=1) root.rowconfigure(2, weight= 1) root.columnconfigure(2, weight=1) Frame(root).grid(row=1, column=1, sticky=NSEW)'
-
哦,谢谢你的提示!我让它按我的意愿工作。是否要将您的 cmets 转换为答案,以便我可以将其标记为已接受的答案?