下面的代码产生了一个丑陋但功能性的例子,在文本小部件中使用滚动条并导致一些问题 . 注意:这是在Windows框中使用Python 3完成的 .
-
出现的滚动条附加到框架上,虽然它滚动文本框内容,但我希望它附加到文本小部件本身 . 我一直无法做到这一点 .
-
有一些名为“scrolledtext”的Tkinter模块的引用,它应该是一个更好的机制,用于将滚动条添加到文本框但是,我还没有找到任何如何导入它的例子并调用它我能够开始工作(可能需要一个例子) .
frame1 = tk.Frame(win,width=80, height=80,bg = '#808000')
frame1.pack(fill='both', expand='yes')
scrollbar = Scrollbar(frame1)
scrollbar.pack(side=RIGHT, fill=Y)
editArea = Text(frame1, width=10, height=10, wrap=WORD, yscrollcommand=scrollbar.set)
editArea.pack()
scrollbar.config(command=editArea.yview)
editArea.place(x=10,y=30)
2 回答
你是对的,你可以使用
tkinter.scrolledtext
模块中的ScrolledText
小部件,如下所示:你去了:
虽然使用ScrolledText小部件可能会为您节省几行代码,但它并没有做任何您自己无法做的事情 . 自己动手将有助于消除一些神秘感 .
你实际上做的几乎都是正确的 . 你犯的错误是你应该让你的文本小部件完全填满它的容器,而不仅仅是它的一小部分 .
执行此操作的标准方法是这样的:
这里的所有都是它的 . 现在,无论您的容器因窗口调整大小等而变得多大,滚动条将始终显示为附加到文本小部件 . 然后,将整个容器,文本窗口小部件和滚动条组作为单个窗口小部件添加到整个GUI时 .
请注意,您也可以在此处使用网格 . 如果您只有垂直滚动条,则打包更容易 . 如果您同时拥有水平和垂直滚动条,则网格更有意义 .
要完成这种错觉,您可以将文本小部件的边框宽度设置为零,并将包含框架的边框宽度设置为1,并使凹陷减轻,并且滚动条将显示为文本小部件中的“内部” .
这是一个完整的工作示例,看起来或多或少像您的示例:
就个人而言,我不建议进行全球导入,我不建议使用地方,但我希望尽可能接近原始版本 .