6

我在添加从条目框中获取的值并将其添加到现有数字时遇到了一些麻烦。在这种情况下,我希望将“更改速度”框的值添加到机器人当前速度。运行时,我的代码会产生错误:

类型错误:+= 不支持的操作数类型:“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_speedIntVar,.get()将检索其值作为 Python int。

于 2013-11-01T02:01:57.817 回答