python,tkinter - 帧高度和宽度参数值无效

时间:2017-04-27 14:51:18

标签: python tkinter

我正在尝试创建16个按钮,这些按钮将完全占据窗口的底部3/4。但是,框架高度和宽度值似乎没有任何影响。如何获得我想要的行为?

from tkinter import *


class Application(object):
    def __init__(self):
        # Creating the main window
        self.window = Tk()
        self.window.geometry('{}x{}'.format(400, 400))

        # frame where numbered buttons will be
        frame = Frame(self.window)
        frame.configure(height=300, width=300)
        frame.pack(side=BOTTOM)

        # add buttons
        for i in range(4):
            for j in range(4):
                Button(frame, text=str(4*i + j + 1)).grid(row=i, column=j, sticky=N+E+S+W)
        self.window.mainloop()


def main():
    app = Application()

main()

1 个答案:

答案 0 :(得分:1)

您看到的行为的原因是tkinter小部件旨在缩小或扩展,以便在使用gridpack时完全适合孩子。 99.99%的时间这是完全正确的行为,因为它导致GUI响应字体大小,屏幕分辨率和窗口大小的变化。

如果您的目标是将屏幕划分为两部分,其中一部分占据屏幕的1/4而一部分占用3/4,最佳解决方案是使用grid或{{1因为这两者都可以很容易地设置相对大小。

我通常不会推荐place,所以这里是使用网格的解决方案。请注意使用placegrid.rowconfigure

grid.columnconfigure

通过此示例,根窗口中的第0行(零)可用于您想要的任何内容。 Tkinter将尽力使GUI的1/4成为窗口高度的一部分。我建议在该行中放置一个框架,然后在该框架内放置任何其他小部件。