简体   繁体   English

如何在Python中将`tkinter.grid`放置的小部件居中?

[英]How do I center widgets placed by `tkinter.grid` in Python?

I have a GUI. 我有一个GUI。 On this I have grid ed many widgets. 在这个grid我有很多小部件。 But the problem is that the widgets placed by gridding always are at the top left. 但问题是网格放置的小部件总是在左上角。 I want them at the center of the screen while still retaining placing them by the grid method. 我希望它们位于屏幕的中心,同时仍然保留通过grid方法放置它们。 How do I do that? 我怎么做? Here's my code: 这是我的代码:

    self.frame = tkinter.Frame()

    tkinter.Label(self.frame, text=(name+' By '+coordinator), font=('Calibri', 24)).grid(row=1,column=1,columnspan=4)

    self.tree = tkinter.ttk.Treeview(self.frame)
    self.tree.grid(row=2, column=1, rowspan=8, padx=4, pady=4, ipadx=4, ipady=4)

    tkinter.ttk.Label(self.frame, text='ID:').grid(row=4, column=2)
    self.id = tkinter.ttk.Entry(self.frame, width=3)
    self.id.grid(row=5, column=2, padx=4)

    tkinter.ttk.Label(self.frame, text='Points:').grid(row=4, column=3)
    self.marks = tkinter.ttk.Entry(self.frame, width=2)
    self.marks.grid(row=5, column=3, padx=4)

    self.submit = tkinter.ttk.Button(self.frame, text='Submit')
    self.submit.grid(row=5, column=4, padx=4)

在此输入图像描述

Thanks. 谢谢。

You can use the following trick which offers the advantage of not modifying your existing code: 您可以使用以下技巧,它提供了不修改现有代码的优势:

Draw self.frame inside an other tkinter.Frame() instance where it must be centered. 在另一个必须居中的tkinter.Frame()实例中绘制self.frame

self.main_frame = tkinter.Frame()
self.frame.place(in_=self.main_frame, anchor="c", relx=.50, rely=.50)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM