python - 如何防止小部件缩小到其内容的大小?
问题描述
在我正在编写的代码中,我创建了一些框架并将它们放置在示例中。层次框架的宽度设置为 260。当我放入宽度小于框架宽度的标签时,框架的宽度减小到标签的宽度。
代码如下:
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("Application")
root.geometry("1200x1000")
s=ttk.Style()
s.configure('TFrame', background='gray')
s.configure('windowframes.TFrame', background='darkgray')
mainframe = ttk.Frame(root, padding="2 2 2 2",height=300)
mainframe.grid(column=0, row=0, sticky=(N,E,S,W))
toolframe = ttk.Frame(mainframe,height=60,style='windowframes.TFrame')
toolframe.grid(column=0, row=0, columnspan=2,sticky=(N,S,E,W), padx=2, pady=2)
hierarchyframe = ttk.Frame(mainframe,width=260,style='windowframes.TFrame')
hierarchyframe.grid(column=0, row=1, rowspan=2, sticky=(N,S,E,W), padx=2, pady=2)
label = Label(hierarchyframe,text="sample")
label.grid(column=0, row=0)
graphicframe = ttk.Frame(mainframe,style='windowframes.TFrame')
graphicframe.grid(column=1, row=1, sticky=(N,S,E,W), padx=2, pady=2)
fileframe = ttk.Frame(mainframe,height=360,style='windowframes.TFrame')
fileframe.grid(column=1, row=2, sticky=(N,S,E,W), padx=2, pady=2)
mainframe.columnconfigure(1,weight=1)
mainframe.rowconfigure(1,weight=1)
root.columnconfigure(0,weight=1)
root.rowconfigure(0,weight=1)
root.mainloop()
样式在那里,因此您可以看到框架的轮廓。
解决方案
您可以修复您需要告诉它Frame
不要传播它的尺寸,这意味着不要调整自身以适应其内容。grid_propagate()
您可以使用如下所示的方法来防止它发生:
...
toolframe = ttk.Frame(mainframe,height=60,style='windowframes.TFrame')
toolframe.grid(column=0, row=0, columnspan=2,sticky=(N,S,E,W), padx=2, pady=2)
hierarchyframe = ttk.Frame(mainframe,width=260,style='windowframes.TFrame')
hierarchyframe.grid(column=0, row=1, rowspan=2, sticky=(N,S,E,W), padx=2, pady=2)
hierarchyframe.grid_propagate(False) # <=== ADDED ====
label = Label(hierarchyframe,text="sample")
...
这是显示结果的屏幕截图:
另一种替代方法是使用以像素为单位设置列的最小大小,如下所示,这不会阻止它变宽:
hierarchyframe.columnconfigure(0, minsize=260)
推荐阅读
- java - 如何获取 Volley POST 响应正文?
- ios - 存储 .p12 文件并在 iOS 应用中实现 SSL
- amazon-web-services - AWS API Gateway WebSocket 连接错误
- abap - 在 SALV 全屏上启用/禁用按钮的问题
- java - Java Looping 年从现在到后面
- reactjs - 我应该使用连接函数的 ComponentDidMount 或 mergeProps 来获取数据吗?
- ios - 绘制带有侧曲线 UIBezierPath 的对角线
- c# - 我如何使这些点出现在 Windows 窗体应用程序上?
- c# - 如何将控制器(控制器名称)作为参数传递给另一个方法?
- python-3.x - 从字典中的列表中获取字典值