Tkinter中多个文本框的滚动条设置

0 投票
2 回答
1728 浏览
提问于 2025-04-17 17:34

问题

我该如何让一个滚动条可以移动整个Tkinter框架? 注意:我使用的是Python 2.7.3。

代码和解释

这是我用来定义滚动条的代码:

        scrollbar = Scrollbar(soeg)
        scrollbar.pack(side=RIGHT, fill="y")

这是我用来定义文本框的代码:

        h = 0
        s = 0
        for i in dom_nodup:

            abc = dom_nodup[h]
            text = Text(soeg, bg="brown", fg="white", height="10", width="60")          
            text.insert(INSERT, "%s \n" % abc[0])
            text.insert(END, "%s \n\n\n" % abc[1])
            text.pack()
            h += 1  
            s += 1

我为每个文本实体创建了一个新的文本框,这样以后更容易查看(我打算添加一个按钮来显示/隐藏输入框)。

滚动条是有的,但目前没有功能。

image

2 个回答

0

要让滚动条正常工作,你需要做两件事:首先,你要告诉它哪个可以滚动的组件需要滚动;其次,你还要告诉这个可滚动的组件,哪个滚动条需要更新当前的位置。

scrollbar.configure(command=text.yview)
text.configure(yscrollcommand=scrollbar.set)
0

我建议你使用 ScrolledText 这个小部件。它会自动为每个文本小部件添加一个滚动条,而且它的参数和 Text 是一样的。下面是一个简单的例子,教你怎么用。

from Tkinter import * #Import the Tkinter module
from ScrolledText import ScrolledText #import the scrolled text module
message = "I \n am \n scroll \n able. \n\n\n\n\n\n Yes I am!"
class Application(Frame): #Create a frame for the widgets

    def __init__(self, master):  #initialize the grid and widgets
        Frame.__init__(self,master)
        self.grid()
        self.widgets()
    def widgets(self):
        self.mytext = ScrolledText(self, width = 10) #Creates the widget
        self.mytext.grid() #Places it


root = Tk()
root.title("My Text Example")
#make my screen dimensions work

root.geometry("500x1000")
app = Application(root)

root.mainloop()

想了解更多信息,可以查看 Tkinterbook这个问题

撰写回答