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在框架小部件上似乎有点短,因此我必须在其上临时指定一个固定值。