Python 文本小部件上的滚动条可能需要根据选项卡顺序滚动才能显示

Python 文本小部件上的滚动条可能需要根据选项卡顺序滚动才能显示,python,tkinter,scrollbar,ttk,Python,Tkinter,Scrollbar,Ttk,当选择包含tkinter的ttk.Notebook选项卡时,tkinter与文本小部件关联的滚动条并不总是正确显示 下面是两个不同的过程来演示这种奇怪的行为: 运行程序。注意第一个标签。按下按钮,第二个选项卡中的文本小部件将写入行。转到第二个选项卡。注意滚动条和滚动按钮,滚动条可见 第二次运行程序,但这一次,在按下按钮之前,选择第二个选项卡,不执行任何操作,然后再次选择第一个选项卡。然后按下按钮,然后选择第二个选项卡。滚动条中的滚动按钮不可见。您必须将鼠标放在文本小部件中,并滚动鼠标按钮以查看其

当选择包含tkinter的
ttk.Notebook
选项卡时,tkinter与
文本
小部件关联的
滚动条
并不总是正确显示

下面是两个不同的过程来演示这种奇怪的行为:

  • 运行程序。注意第一个标签。按下按钮,第二个选项卡中的文本小部件将写入行。转到第二个选项卡。注意滚动条和滚动按钮,滚动条可见

  • 第二次运行程序,但这一次,在按下按钮之前,选择第二个选项卡,不执行任何操作,然后再次选择第一个选项卡。然后按下按钮,然后选择第二个选项卡。滚动条中的滚动按钮不可见。您必须将鼠标放在文本小部件中,并滚动鼠标按钮以查看其显示

  • 我怎样才能解决这个问题

    这是我的密码:

    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()
    
    我在Windows7(三台计算机)上使用Python2.7


    对我来说,它的工作原理与您预期的一样,因此您可能做错了什么,请再次检查。请务必严格按照我的说明进行操作。要查看问题,请从头开始启动程序。选择第二个选项卡,不执行任何操作(不执行任何操作,不单击文本小部件或滑块中的任何位置),然后选择第一个选项卡。然后按下按钮。然后选择第二个选项卡。您会注意到滑块不在那里。它仅在单击文本小部件并用鼠标滚动时出现。我已经在很多电脑上试过很多次了。我应该补充一点,我现在使用的是Windows 7,它对我来说是可行的,但我现在使用的是Python 3.5,请不要在Windows上尝试使用2.7,这将帮助我向世界表明,这不仅仅是我的想象。我已经在工作中推迟了好几个月了。最后,我将这个问题提炼成我能想到的最简单的脚本,并将其放到stackoverflow上