首页 > 解决方案 > 为什么我放大文本编辑器时状态栏隐藏

问题描述

当我增加文本小部件的字体大小时,我的状态栏隐藏了为什么?

文本小部件的代码:

    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)

错误:

正常尺寸- 正常大小

140% 缩放 140% 缩放

140%缩放后- 错误

标签: pythonpython-3.xtkintertext-editor

解决方案


这是因为当您更改字体时,文本小部件的大小会发生变化。看来您还强制将窗口的大小设置为特定大小。当文本小部件增长时,窗口中不再有足够的空间以适合所有小部件的首选大小。

发生这种情况时,tkinter 必须开始缩小小部件。打包器以与打包东西相反的顺序执行此操作(或者更准确地说,它从第一个小部件开始分配空间,因此打包器在到达最后一个小部件时空间不足)。您几乎可以肯定先打包文本小部件,然后打包状态栏,因此pack在到达状态栏之前空间不足。

解决方案非常简单:在打包文本小部件之前打包状态栏,以便它获得所需的所有空间。最后打包文本小部件时,如果打包程序需要减小小部件的大小以使其适合屏幕,则该小部件将被缩小。


推荐阅读