AttributeError:'str'对象没有属性'insert'

时间:2013-02-28 12:39:53

标签: python tkinter twisted

我是一个很新的程序员,如果你能帮助我,我将不胜感激。我看过google但是有一些“Twisted + Tkinter”的例子。当我点击窗口上的“发送”按钮时,我收到此错误:

错误是 e.insert(0,M) AttributeError:'str'对象没有属性'insert'

代码:

from Tkinter import *
from twisted.internet import reactor, tksupport

class App(object):
    def onQuit(self):
        print "Quit!"
        reactor.stop()

    def onButton(self):
        m=self.entryvar.get()
        e=self.labeltext.get()
        e.insert(0,m)

def __init__(self, master):
    frame = Frame(master)
    frame.pack()

    self.entryvar=StringVar()
    self.mes=Entry(frame,textvariable=self.entryvar)
    self.mes.pack()

    self.labeltext=StringVar()
    self.label=Label(frame,textvariable=self.labeltext)
    self.label.pack()

    q = Button(frame, text="Quit!", command=self.onQuit)
    b = Button(frame, text="Send", command=self.onButton)
    q.pack(side=LEFT)
    b.pack(side=LEFT)

if __name__ == '__main__':
    root = Tk()
    tksupport.install(root)
    app = App(root)
    reactor.run()

2 个答案:

答案 0 :(得分:3)

如果您要更新labeltext StringVar,则需要为其构建 new 字符串值。 str不可变的序列类型,与list不同,无法就地修改。

在这种情况下,也许您打算使用字符串连接?以下代码会将labeltext设置为m + e,其中elabeltext的先前内容,有效地预先m

def onButton(self):
    m=self.entryvar.get()
    e=self.labeltext.get()
    self.labeltext.set(m + e)

答案 1 :(得分:1)

如果要用条目文本

替换标签文本
 def onButton(self):
    entry_text = self.entryvar.get()
    self.labeltext.set(entry_text)

或者,如果您想在标签文本

之前添加条目文本
 def onButton(self):
    entry_text = self.entryvar.get()
    label_text = self.labeltext.get()
    self.labeltext.set(entry_text + " " + label_text)