"定时"隐藏文本中的水平滚动条

时间:2016-02-22 20:01:19

标签: python tkinter

使用小功能,我根据换行设置切换文本小部件中水平滚动条的可见性。只包裹='无'表明。 启动编辑器时,栏总是显示,因为默认值为wrap =' none'然后通过app.configure()设置为' word'。在我使用切换功能之前,该栏保持可见。

如何拦截app.configure()'的信号?尽快隐藏吧? (对于这个,什么是正确的程序员词汇?)

import tkinter as tk
class Editor(tk.Text):
    def __init__(self, *args, **kwargs):
        tk.Text.__init__(self, *args, **kwargs)

        hsb = tk.Scrollbar(orient="horizontal", command=self.xview)
        self.configure(xscrollcommand=hsb.set)
        hsb.pack(side="bottom", fill="x")

        if self.cget('wrap') == 'word': 
            self.hsb.configure(width=0)

if __name__ == "__main__":

    app = Editor()
    app.configure(wrap='word')
    app.pack()
    app.master.geometry('100x100')
    app.insert("end", "Nunc sit amet dictum felis, ut tempor leo.\n")
    app.mainloop()

编辑:添加了一些简单的代码。 app.configure将换行设置为单词但该栏仍处于“无”状态。或者' char'模式?

1 个答案:

答案 0 :(得分:1)

滚动条没有模式。没有办法拦截配置(至少在没有深入研究tcl / tk代码的情况下)。如果为程序的用户提供更改换行模式的方法,则链接到按钮或菜单项的功能应该更改滚动条以及换行模式。 __init__

中的此声明
        if self.cget('wrap') == 'word': 
            self.hsb.configure(width=0)

应该在条件中添加or 'char'并需要一个else子句。我会改写为

    self.hsb['width'] = 16 if self['wrap'] == 'none' else 0

并在任何换行功能中使用它。