如何将StringVar连接到Python/Tkinter中的文本小部件?

如何将StringVar连接到Python/Tkinter中的文本小部件?,python,tkinter,Python,Tkinter,基本上,我希望文本小部件的主体在StringVar发生更改时发生更改。短版本是,您不能。至少,不是不做额外的工作。文本小部件不直接支持变量选项 如果您想自己完成所有工作,可以在变量上设置跟踪,使文本小部件保持最新,并且可以向文本小部件添加绑定以使变量保持最新,但是Tkinter中没有直接内置的自动跟踪功能 不直接支持此功能的主要原因是,文本小部件可以不仅仅包含ascii文本,还可以包含不同的字体和颜色、嵌入的小部件和图像以及标记。我在处理项目时想到了这一点。其实很简单: import tkint

基本上,我希望文本小部件的主体在StringVar发生更改时发生更改。

短版本是,您不能。至少,不是不做额外的工作。文本小部件不直接支持
变量
选项

如果您想自己完成所有工作,可以在变量上设置跟踪,使文本小部件保持最新,并且可以向文本小部件添加绑定以使变量保持最新,但是Tkinter中没有直接内置的自动跟踪功能


不直接支持此功能的主要原因是,文本小部件可以不仅仅包含ascii文本,还可以包含不同的字体和颜色、嵌入的小部件和图像以及标记。

我在处理项目时想到了这一点。其实很简单:

import tkinter as tk
from tkinter import *
from tkinter.scrolledtext import ScrolledText


def get_stringvar(event):
    SV.set(ST1.get("1.0", END))
    ST2.replace("1.0", END, SV.get())


root = tk.Tk()

SV = StringVar()

ST1 = ScrolledText(root)
ST1.pack()
ST1.bind('<KeyRelease>', get_stringvar)


ST2 = ScrolledText(root)
ST2.pack()

root.mainloop()
将tkinter作为tk导入
从tkinter进口*
从tkinter.scrolledtext导入scrolledtext
def get_stringvar(事件):
SV.set(ST1.get(“1.0”,结束))
ST2.replace(“1.0”,END,SV.get())
root=tk.tk()
SV=StringVar()
ST1=滚动文本(根)
ST1.pack()
ST1.bind(“”,get_stringvar)
ST2=滚动文本(根)
ST2.pack()
root.mainloop()

从tkinter导入中删除
*
您已经在执行
将tkinter作为tk导入
。虽然你的代码是有效的,但是你增加了一个额外的步骤。为什么不直接执行ST2.replace(“1.0”,“end”,ST1.get(“1.0”,“end”)))?只有在键入时才能绑定keyrease。如果用鼠标或通过菜单粘贴字符,变量将不会更新。此外,到达
END
将获得一个用户未添加的额外换行符。