1

私はかなり新しいプログラマーであり、助けていただければ幸いです。私はグーグルで調べましたが、「Twisted + Tkinter」の例がいくつかあります。ウィンドウの [送信] ボタンをクリックすると、次のエラーが表示されます。

エラーは e.insert(0,m) AttributeError: 'str' object has no attribute '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()
4

2 に答える 2

3

を更新する場合は、新しい文字列値labeltext StringVarを作成する必要があります。は不変のシーケンスタイプであり、インプレースで変更することはできません。strlist

この場合、おそらく文字列連結を使用するつもりでしたか?次のコードはに設定さlabeltextれますm + e。ここで、eはの前の内容でありlabeltext、実質的に先頭に追加されmます。

def onButton(self):
    m=self.entryvar.get()
    e=self.labeltext.get()
    self.labeltext.set(m + e)
于 2013-02-28T12:43:42.783 に答える
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)
于 2013-02-28T12:48:59.277 に答える