Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x tkinter设置小部件的固定宽度和高度_Python 3.x_Tkinter - Fatal编程技术网

Python 3.x tkinter设置小部件的固定宽度和高度

Python 3.x tkinter设置小部件的固定宽度和高度,python-3.x,tkinter,Python 3.x,Tkinter,在这里,我定义了一个子框架类,并希望在其容器中使用这样的框架实例,并为这样的小部件设置一个固定的大小,我尝试了如下方法。但始终获取“大型机”对象没有属性“可调整大小”错误。这是测试演示,任何帮助都将不胜感激 from tkinter import * class MainFrame(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.createWidge

在这里,我定义了一个子框架类,并希望在其容器中使用这样的框架实例,并为这样的小部件设置一个固定的大小,我尝试了如下方法。但始终获取“大型机”对象没有属性“可调整大小”错误。这是测试演示,任何帮助都将不胜感激

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()

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

我明白了,
Toplevel()
小部件只能在创建时使用
.pack\u propagate(False)
给我提示。谢谢!将内部框架强制设置为固定大小似乎不是一个好主意。您可能会得到一堆额外的空间,或者隐藏一些内部小部件。如果您在具有不同分辨率或不同默认字体的系统上运行该程序,该怎么办?将小部件强制设置为特定大小几乎总是一个坏主意。Tkinter非常擅长选择合适的大小。@BryanOakley我知道,但扩展区域会扩展并覆盖该框架下的其他小部件,更好的解决方案是添加标签框架并为其设置滚动条,但Tkinter在框架小部件上似乎有点短,因此我必须在其上临时指定一个固定值。