“文本”窗口小部件上的滚动条可能需要在显示之前根据Tab键顺序滚动

时间:2015-07-04 23:56:22

标签: python tkinter scrollbar ttk

当选择包含它们的Scrollbar标签时,与Text小部件相关联的tkinter ttk.Notebook并不总是正确显示。

以下是两个不同的程序来演示奇怪的行为:

  1. 运行程序。注意第一个选项卡。按下按钮,行将写入第二个选项卡中的文本小部件。转到第二个选项卡。请注意滚动条和滚动按钮,可以看到滚动条。

  2. 第二次运行程序,但这次,在按下按钮之前,选择第二个选项卡,什么也不做,然后再次选择第一个选项卡。然后按按钮,然后选择第二个选项卡。滚动条中的“滚动”按钮不可见。您必须将鼠标放在文本小部件中并滚动鼠标按钮才能看到它。

  3. 我该如何解决这个问题?

    这是我的代码:

    from Tkinter import *
    import ttk
    
    class Log:
        def __init__(self,nb,name):
            # Make a frame and put it on a tab
            self.frame= Frame(nb);
            nb.add(self.frame, text=name)
    
            # Put a scroll text on the frame
            self.scrollBar=Scrollbar(self.frame)
            self.text = Text(self.frame,
                            yscrollcommand=self.scrollBar.set,
                            width =40,
                            height=10)
    
            self.scrollBar.config(command=self.text.yview)
    
            self.text.pack(side=LEFT) 
            self.scrollBar.pack(side=RIGHT,fill=Y) 
    
        def fillLog(self):
            for i in range(100):
                self.text.insert('end','hellow world\n')
    
    root = Tk()
    nb = ttk.Notebook(root)
    nb.pack()
    
    log1 = Log(nb,'log1')
    log2 = Log(nb,'log2')
    
    ttk.Button(root, text='PUT TEXT IN 2nd tab',command=log2.fillLog).pack()
    
    mainloop()
    

    我在Windows 7(三台计算机)上使用Python 2.7。

    enter image description here

0 个答案:

没有答案