tkinter设置小部件固定的宽度和高度

时间:2017-03-20 13:36:02

标签: python-3.x tkinter

这里我定义了一个子Frame类,并希望在其容器中使用这样的框架实例并为这样的小部件设置固定大小,我尝试了下面的方法。但总是出现'MainFrame' object has no attribute 'resizable'错误。这是测试演示,任何帮助都会受到赞赏。

from tkinter import *

class MainFrame(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.createWidget()

    def createWidget(self):
        self.innerFrame = Frame(self)
        self.innerFrame.master.resizable(width=False, height=False)  # ====> this place raise error:'MainFrame' object has no attribute 'resizable'
        self.innerFrame.master.maxsize(width=300, height=400)
        for l in range(100):
            label = Label(self.innerFrame, text="label" + str(l))
            label.pack()
        self.innerFrame.pack()

if __name__ == '__main__':
    top = Tk()
    top.resizable(width=False, height=False)
    top.minsize(width=400, height=600)
    app = MainFrame(top)
    app.pack()
    app.mainloop()

1 个答案:

答案 0 :(得分:2)

.resizable().maxsize()仅适用于Tk根窗口以及您使用Toplevel()创建的其他窗口。要使框架具有固定尺寸,请在创建时为其指定width=height=选项,然后在其上调用.pack_propagate(False).grid_propagate(False)(无论哪个匹配您将用于其子窗口小部件的几何管理器。)