【发布时间】:2020-01-31 01:12:12
【问题描述】:
我正在编写我的个人文本编辑器。但我对 2 个小部件文本和滚动条有问题(将一个滚动条连接到两个文本)。
我的想法和逻辑是什么(一开始)?
我想显示 2 个文本,一个用于编写用户输入的文本,一个用于显示行号。我将它们都打包在根目录中。然后我创建一个滚动条,它将在 Y 轴上滚动 2 个文本,所以我想做的(主要)是将 2 个小部件(文本)连接到一个滚动条。
但是没有用。
这个系统绝对行不通,有什么建议或解决办法来解决这个最初的想法吗?
我发现的其他想法。
第一次尝试后,我认为我可以将 2 个文本打包到 1 个容器中。我试图创建一个包含 2 个文本的框架(打包到根目录中),我这样做是因为我必须仅将滚动条连接到框架。但它没有用,而且它不允许我在滚动条选项中编写以下sn-p:command=frame.yview,似乎我无法将框架连接到滚动条。
所以:
我会问你我的推理是否正确,以及如何解决。如果不行我该怎么办?
在 Google 上发现了类似的问题:(但我不明白)
How to scroll two parallel text widgets with one scrollbar?
Tkinter adding line number to text widget
from tkinter import *
root = Tk()
root.geometry("480x540+100+100")
root.config(cursor='')
line = Text(root, bg="light grey", font="Roman 24", width=4)
line.pack(side=LEFT, fill=BOTH)
text = Text(root, bg="grey", font="Roman 24")
text.pack(side=LEFT, fill=BOTH, expand=True)
scrollbar = Scrollbar(text, orient=VERTICAL, command=(line.yview, text.yview))
text.configure(yscrollcommand=scrollbar.set)
line.configure(yscrollcommand=scrollbar.set)
scrollbar.pack(side=RIGHT, fill=Y)
for n in range(50):
line.insert("{}.0".format(n+1), "{}\n".format(n+1))
text.insert("{}.0".format(n+1), "Line no. {}\n".format(n+1))
if __name__ == '__main__':
root.mainloop()
【问题讨论】:
标签: python tkinter text scrollbar