将tkinter的intvar添加到整数

时间:2013-11-01 01:46:34

标签: python user-interface tkinter tk

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

  

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

2 个答案:

答案 0 :(得分:7)

您需要先调用.get的{​​{1}}方法:

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中的数字(这将是您键入的数字),将其加1,然后将其打印出来屏幕。

答案 1 :(得分:0)

您没有显示定义.speeddelta_speed的代码,所以我猜这里。尝试:

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

如果 delta_speedIntVar.get()将以Python int的形式检索其值。