使用小功能,我根据换行设置切换文本小部件中水平滚动条的可见性。只包裹='无'表明。 启动编辑器时,栏总是显示,因为默认值为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'模式?
答案 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
并在任何换行功能中使用它。