pythontkinter通过函数更新textbox内容

2024-06-28 20:47:32 发布

您现在位置:Python中文网/ 问答频道 /正文

这里是一个初学者程序员,我正在网上学习如何制作一个基本的图形用户界面,但是他们都没有说如何使用你的代码的其他部分的输出来更新一个文本框。在

我在网站上尝试了其他多种答案,包括一个使用StringVar的,这让我一无所获,另一个使用了装饰器,其余的似乎超出了我的理解力。在

我的代码是:

import tkinter as tk

import time
#Creating Root
root = tk.Tk()


#GUI TEMPLATE


frame =tk.Frame(root,
            height = 100,
            width = 400)
frame.pack()
v = StringVar()

colour = ["red","blue","green","white","yellow"]
labels = range(5) 
#change number to change how many labels
for i in range(5):
    l= tk.Label(root,
            text = colour[i],
            bg = colour[i])
    l.place(x = 10 +i*70, y = 10, width=60, height=25)




T1 = tk.Text(root, height=2, width=40)
words = "Don't name your files after module names!"
T1.insert(tk.END, textvariable=v)

T1.place(x = 10, y= 40)

S = tk.Scrollbar(root)
S.config(command=T1.yview)
S.place(x = 340, y=40)

T1.config(yscrollcommand=S.set)

root.mainloop()

v.set("Something Else!")

现在,它应该输出一行彩色标签,效果很好,还有一个带有滚动条的文本框,它会立即更新为“somethine Else!”,但效果不佳。在

相反,我得到了以下错误:

名称错误:未定义名称“StringVar”

我知道这个错误意味着什么,只是在找到一个对我有用的解决方案时,我遇到了困难,不需要博士学位来理解。在

我所要求的是,如果有人能给我一个解决办法,并希望能解释清楚!在

提前谢谢。在

编辑: 所以在修复了语法错误,然后发现我要做的事情不起作用之后,我该怎么做呢?在

我可以用标签代替吗?或者还有其他更好的方法吗? 再次感谢!在


Tags: 代码importlabels错误rangeplacerootwidth
2条回答

我正在尝试用Tkinter学习线程,并在Python3的Tkinter文本框中插入和更新文本,这可能会有所帮助。在

我发现通过删除文本,我可以插入新的文本。直到我删除了现有的文本,说明插入的文本接缝被忽略。在

{  foo = input("Give me input: " )
   self.T.delete("1.0", END)   #Clear the text window so we can write.
   self.T.insert(END,foo)      #Write the new text.}

StringVar应通过tk访问:

v = tk.StringVar()

另一个注意事项是,tk.Text.insert不接受textvariable参数,因此以下内容将不起作用:

^{pr2}$

docs

^{bq}$

另请参阅How can I connect a StringVar to a Text widget in Python/Tkinter?以了解为什么这不起作用。在

相关问题 更多 >