Python 3.6中的Tkinter:网格粘性选项不起作用

时间:2017-01-07 19:44:53

标签: python user-interface tkinter

我是Python的新手,并且正在尝试使用Python开发GUI来帮助自动化我的一些工作。我看过这个论坛和其他人的一些旧帖子,但找不到我的错误。

我正在尝试使用.grid()方法使标签文本居中,两者都在弹出的窗口中,但如果用户调整大小,也会保持居中。我在网上找到的主要建议是使用.grid_rowconfigure()方法并给相关行赋予非0权重,但这似乎不起作用。

我已经创建了一个备用测试代码,它具有相同的问题,以避免发布代码墙:

import tkinter as tk

class TestApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        label = tk.Label(self, text="TEST")
        label.grid(row=0, sticky="nsew")
        label.grid_rowconfigure(0, weight=1)

TestApp().mainloop()

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

在标签上调用grid_rowconfigure()只会影响标签中包含的小部件。要影响标签本身,您必须在其父级(测试代码中为self)上调用此方法。

固定代码:

import tkinter as tk

class TestApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        label = tk.Label(self, text="TEST")
        label.grid(row=0, sticky="nsew")
        self.grid_rowconfigure(0, weight=1)

TestApp().mainloop()

答案 1 :(得分:1)

您不需要为相关行提供非零权重,您可以为其他行提供非零权重:

label = tk.Label(self, text="TEST")
label.grid(row=1, column=1)
self.grid_rowconfigure(0, weight=1)
self.grid_rowconfigure(2, weight=1)
self.grid_columnconfigure(0, weight=1)
self.grid_columnconfigure(2, weight=1)