【问题标题】:Python Tkinter updating text-box content via a functionPython Tkinter 通过函数更新文本框内容
【发布时间】:2016-11-24 09:18:16
【问题描述】:

这里是初学者,正在制作一个基本的 GUI,作为我在网上学习的教程的一部分,但他们都没有说明如何使用代码其他部分的输出来更新文本框。

我在网站上尝试了多个其他答案,包括一个使用 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!")

现在,它应该输出的是一行彩色标签,它可以正常工作,以及一个带有滚动条的文本框,它应该立即更新为“Something Else!”,但它不能正常工作。

相反,我收到以下错误:

NameError:未定义名称“StringVar”

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

我要问的是,是否有人可以给我一个可以解决这个问题的解决方案,并希望能解释一下!

提前致谢。

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

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

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    StringVar 应通过tk 访问:

    v = tk.StringVar()
    

    另一方面,tk.Text.insert 不采用textvariable 参数,因此以下内容不起作用:

    T1.insert(tk.END, textvariable=v)
    #                 ^^^^^^^^^^^^??
    

    来自docs

    与条目小部件不同,文本小部件不支持 “文本变量”配置选项

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

    【讨论】:

    • 谢谢!我从没想过尝试通过 tk 访问它。至于第二部分,文本变量如何工作?我在网上找不到很多东西,很抱歉再问一个问题!
    【解决方案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.}
    

    【讨论】:

    • 我试图发布我的整个文件,但格式一团糟。
    猜你喜欢
    • 1970-01-01
    • 2016-09-01
    • 2017-11-06
    • 2020-03-09
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    相关资源
    最近更新 更多