使用ThemedTKinterFrame时grid_columnconfigure的weight设置完全不生效
使用ThemedTKinterFrame时grid_columnconfigure的weight设置完全不生效
嘿,我太懂你遇到的这个坑了!TKinterModernThemes的ThemedTKinterFrame其实做了一层封装,你的控件根本不是直接放在root窗口上的,而是被塞进了库内部的一个主容器里(通常叫mainframe)。你现在直接给self.root设置列权重,相当于在最外层窗口瞎调整,但你的两个LabelFrame根本不在这个层级上,自然完全没效果。
给你两个实用的解决办法:
直接操作内部主容器:
把设置列权重的代码改成针对库的内部主容器self.mainframe,而不是self.root。修改后的代码应该是这样:# 替换原来的self.root.grid_columnconfigure行 self.mainframe.grid_columnconfigure(0, weight=0) self.mainframe.grid_columnconfigure(1, weight=1)你调用
addLabelFrame添加的框架,其实是被布局到self.mainframe的网格里的,只有对这个容器设置列权重,才能真正影响到它们的宽度分配。适配版本差异(以防万一):
如果上面的mainframe属性不存在,你可以打印dir(self)看看这个类的所有属性,或者翻一下TKinterModernThemes的源码,找到它用来承载用户控件的内部容器。比如有些版本可能叫container,但大部分版本都是mainframe。
另外你添加LabelFrame时设置的sticky=tk.NSEW是对的,这个属性能确保框架跟着容器的大小变化而拉伸,配合列权重就能达到你想要的布局效果了。
内容来源于stack exchange
相关产品推荐
相关产品推荐

