为Tkinter的Entry或Text小部件添加滚动条

0 投票
1 回答
4538 浏览
提问于 2025-04-18 11:02

我知道可以给文本框加一个滚动条,但我现在的问题是我想让它只能读,不能编辑。现在我能做的就是把状态设置为DISABLED,这样虽然文本框不能编辑了,但也无法复制里面的文字。

在Tkinter的输入框中没有上下滚动的功能。有没有什么办法可以解决这个问题?任何帮助都很感激。

现在我用的文本框代码是:

`

root=Tk()   
 txt = Text(root, height=5, width=55)
 scr = Scrollbar(root)
 scr.config(command=txt.yview)
 txt.config(yscrollcommand=scr.set)
 txt.pack(side=LEFT)
 txt.insert(INSERT, "hello world\nhello world\n hello world\n hello world\n hello world\n     hello world\n hello world\n hello world\n hello world\n hello world\n")
 txt.insert(END,"\n")
 scr.pack(side="right", fill="y", expand=False)
 txt.pack(side="left", fill="both", expand=True)
 root.mainloop()

`

不过这样的话,文本还是可以被编辑的。

1 个回答

1

你发现无法复制一个禁用的控件里的文字,原因是有些平台上的禁用控件不会获得焦点,而选中文本需要这个焦点。你可以通过在鼠标点击时设置焦点来解决这个问题。

只需在你的代码中添加以下两行:

txt.configure(state="disabled")
txt.bind("<1>", lambda event: txt.focus_set())

撰写回答