6

入力ボックスから取得した値を追加して既存の番号に追加するのに問題があります。この場合、「速度の変更」ボックスの値をロボットの現在の速度に追加します。実行すると、コードでエラーが発生します。

TypeError: += のサポートされていないオペランド型: 'int' および 'IntVar'。

以下は、エントリ ボックスを生成するコードです。

change_speed_entry = ttk.Entry(main_frame, width=5)  # Entry box for linear speed
change_speed_entry.grid()
data = tkinter.IntVar()
change_speed_entry['textvariable'] = data

そして次は、結果を操作しようとするところです。これはクラス内のメソッドです。クラスの他のすべてのメソッドは正しく機能します。

def changeSpeed(self, delta_speed):
    self.speed += delta_speed
4

2 に答える 2

12

.get最初に次のメソッドを呼び出す必要がありますIntVar

def changeSpeed(self, delta_speed):
    self.speed += delta_speed.get()

変数の値を整数として返します。

私はあなたの完全なコードを持っていないので、デモ用に小さなスクリプトを書きました:

from Tkinter import Entry, IntVar, Tk

root = Tk()

data = IntVar()

entry = Entry(textvariable=data)
entry.grid()

def click(event):
    # Get the number, add 1 to it, and then print it
    print(data.get() + 1)

# Bind the entrybox to the Return key
entry.bind("<Return>", click)

root.mainloop()

スクリプトを実行すると、エントリボックスのある小さなウィンドウが表示されます。入力ボックスに数値を入力して をクリックReturnすると、スクリプトは に格納されている数値data(入力した数値) を取得し、それに 1 を加えて画面に表示します。

于 2013-11-01T02:03:38.213 に答える
0

.speedorを定義するコードを表示しなかったdelta_speedので、ここで推測しています。試す:

    self.speed += delta_speed.get()
                             ^^^^^^

delta_speedが の場合IntVar.get()その値を Python int として取得します。

于 2013-11-01T02:01:57.817 に答える