python - 为什么我放大文本编辑器时状态栏隐藏
问题描述
当我增加文本小部件的字体大小时,我的状态栏隐藏了为什么?
文本小部件的代码:
self.text_frame = Frame(self,borderwidth=0)
self.text_frame.pack(fill=BOTH,expand=True)
self.font = Font(size=10)
self.scrollbar = Scrollbar(self.text_frame)
self.scrollbar.pack(side=RIGHT, fill=Y)
self.Text_input = Text(self.text_frame, yscrollcommand =
self.scrollbar.set,undo=True,font=self.font,borderwidth=0)
self.Text_input.pack(fill=BOTH,expand=True)
self.scrollbar.config(command=self.Text_input.yview)
状态栏代码:
self.statusbar_frame = Frame(self,borderwidth=1,relief=SUNKEN)
self.statusbar_frame.pack(side=BOTTOM, fill=X,)
self.statusvar = StringVar()
self.statusvar.set("Ready ")
self.sbar = Label(self.statusbar_frame, textvariable=self.statusvar, anchor="w",borderwidth=0)
self.sbar.pack(side=LEFT)
self.inlabel = StringVar()
self.u_label = Label(self.statusbar_frame,text="UTF-8", anchor="w",borderwidth=0)
self.u_label.pack(side=RIGHT,padx=7)
self.w_label = Label(self.statusbar_frame,text=f"{system()}(CRLF)", anchor="w",borderwidth=0)
self.w_label.pack(side=RIGHT,padx=7)
self.fontsize_label = Label(self.statusbar_frame,text=f"100%", anchor="w",borderwidth=0)
self.fontsize_label.pack(side=RIGHT,padx=7)
self.curosor_label = Label(self.statusbar_frame,textvariable=self.inlabel, anchor="w",borderwidth=0)
self.curosor_label.pack(side=RIGHT,padx=7)
解决方案
这是因为当您更改字体时,文本小部件的大小会发生变化。看来您还强制将窗口的大小设置为特定大小。当文本小部件增长时,窗口中不再有足够的空间以适合所有小部件的首选大小。
发生这种情况时,tkinter 必须开始缩小小部件。打包器以与打包东西相反的顺序执行此操作(或者更准确地说,它从第一个小部件开始分配空间,因此打包器在到达最后一个小部件时空间不足)。您几乎可以肯定先打包文本小部件,然后打包状态栏,因此pack
在到达状态栏之前空间不足。
解决方案非常简单:在打包文本小部件之前打包状态栏,以便它获得所需的所有空间。最后打包文本小部件时,如果打包程序需要减小小部件的大小以使其适合屏幕,则该小部件将被缩小。
推荐阅读
- python-3.x - 如何将字典、列表和 OrderedDicts 嵌套到 DataFrame
- javascript - 如何在 React App 中包含外部 JavaScript?
- apache-spark - 如何将远大的期望结果从 Apache Spark 保存到文件中 - 使用数据文档
- outlook - (Office.js) 从 Microsoft Word 进行邮件合并时,ItemSend 事件未触发
- neo4j - 添加许多节点属性时在NEO4J中加载数据很慢
- python - Docker 容器中的 Producer 需要向本地 topic 发送 mgs
- swiftui - 如何防止 List 干扰 PKCanvassView?
- python - Python类型:注释父类返回子类类型对象的最佳方法
- npm - 如何在 Windows Visual Studio 代码项目中使用 libnPng?
- php - 在实体中添加列而不删除数据