2013-02-28 99 views
1

我是一个相当新的程序员,如果你能帮助我,我将不胜感激。我看过谷歌,但有几个例子“Twisted + Tkinter”。当我点击“发送”按钮,在窗口中我得到这个错误:AttributeError:'str'对象没有属性'插入'

的错误是 e.insert(0,M) AttributeError的:“海峡”对象没有属性“插入”

而代码:

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() 
+1

当您调用insert()时,您会发生什么? ?您正在操纵标签字符串,就像它是一个可变列表一样,但“str”不是可变序列类型。 – 2013-02-28 12:41:49

+0

我试图用条目“entryvar”更改标签“labeltext”上的文本 – billwild 2013-02-28 12:43:30

+0

对于什么值得这似乎与Twisted无关。 – Glyph 2013-03-01 08:37:40

回答

3

如果你想更新labeltextStringVar,你需要构建一个新字符串值了。 str不可变的序列类型,与list不同,不能就地修改。

在这种情况下,也许你打算使用字符串连接?下面的代码将设置labeltextm + e,其中elabeltext以前的内容,有效的前面加上m

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

谢谢,错误消失了,但窗口没有发生任何事情。任何想法? – billwild 2013-02-28 12:47:59

+0

@billwild:'entryvar' *有*值吗?如果它是空的,那么'labeltext'将不会改变。例如,您可以通过将'.set()'调用改为'self.labeltext.set('m:'+ m +',e:'+ e)'来尝试调试。 – 2013-02-28 12:51:52

+0

我应该让self.entryvar = StringVar()/ n self.entryvar.set(“something”) – billwild 2013-02-28 12:55:12

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) 
+0

错误消失,但没有发生在窗口上 – billwild 2013-02-28 12:53:08

相关问题