【问题标题】:Tkinter text insert: " 'Nonetype' object has no attribute 'insert'Tkinter 文本插入:“'Nonetype' 对象没有属性 'insert'
【发布时间】:2013-12-05 03:05:24
【问题描述】:

总体上对编码相对较新,并且一直在尝试为 Python 创建一个简单的聊天客户端。尝试使用 GUI,但遇到了如下所示的问题。

我有一个正常工作的 GUI,并使用“example.get()”函数从输入框中检索字符串文本。然后程序将文本打印到命令提示符(只是为了证明它已被检索),然后应该将其放在文本框中,但是它给了我一个“Nonetype”错误。代码如下。有谁知道如何解决这个问题?

谢谢

from tkinter import *

#Create GUI
root=Tk()
root.title("Chat test")
root.geometry("450x450+300+300")

#Declare variables
msg=StringVar()

#Get and post text to chat log
def postaction():
    msg1=msg.get()
    print(msg1)
    chatlog.insert(INSERT,msg1+'\n')
    root.mainloop()

#Build GUI components
chatlog=Text(root, height=10, state=DISABLED).pack(side=TOP, fill=X)
entry=Entry(root, textvariable=msg).pack(side=BOTTOM, fill=X)
button=Button(root, command=postaction, text="Button").pack()

【问题讨论】:

    标签: python user-interface insert tkinter nonetype


    【解决方案1】:

    小部件的.pack 方法总是返回None。因此,您需要将对.pack 的调用放在他们自己的线路上:

    chatlog=Text(root, height=10, state=DISABLED)
    chatlog.pack(side=TOP, fill=X)
    entry=Entry(root, textvariable=msg)
    entry.pack(side=BOTTOM, fill=X)
    button=Button(root, command=postaction, text="Button")
    button.pack()
    

    【讨论】:

    • 这修复了 Nonetype 错误,但它仍然没有发布到聊天日志。有什么想法吗?
    • @QuarterGeekster - 哦,对不起。我没看到。您可以通过简单地删除创建文本框所在行的state=DISABLED 部分来解决该问题。拥有它会使文本框无法使用。
    • 非常感谢!现在我终于可以继续做其他事情了!
    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多