我是一个很新的程序员,如果你能帮助我,我将不胜感激。我看过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()
答案 0 :(得分:3)
如果您要更新labeltext
StringVar
,则需要为其构建 new 字符串值。 str
是不可变的序列类型,与list
不同,无法就地修改。
在这种情况下,也许您打算使用字符串连接?以下代码会将labeltext
设置为m + e
,其中e
是labeltext
的先前内容,有效地预先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)