类型错误,但两个变量都是整数

时间:2019-02-25 13:53:33

标签: python

代码如下:

这是声明startTimeendTime的地方。我不确定是否应该做IntVar或StringVar,因为它们以前没有用过。

startTime = str
endTime = str

def start1():
    Canvas1 = Canvas(ReactionTest,width = 500,height = 450)
    Canvas1.grid(row=4,column=0,columnspan=3,pady=10)
    image_1 = PhotoImage(file="photo_1.gif")
    Canvas1.create_image(0,0,anchor=NW, image=image_1)
    Canvas1.image_1=image_1
    startTime = time.strftime('%S')
def end1():
    endTime = time.strftime('%S')
    calctimeTaken = int(endTime) - int(startTime)
    timeTaken = str(calctimetaken)

跟踪:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\brent\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1702, in __call__
    return self.func(*args)
  File "C:\Users\brent\OneDrive\Desktop\Computer Science\Program\WonderWalls Program.py", line 810, in end1
    calctimeTaken = int(endTime) - int(startTime)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'type'

2 个答案:

答案 0 :(得分:1)

我认为问题在于您的变量不是全局变量,而您只在函数内部声明了变量。 尝试使用以下代码:


startTime = 0
def start1():
    global startTime
    Canvas1 = Canvas(ReactionTest,width = 500,height = 450)
    Canvas1.grid(row=4,column=0,columnspan=3,pady=10)
    image_1 = PhotoImage(file="photo_1.gif")
    Canvas1.create_image(0,0,anchor=NW, image=image_1)
    Canvas1.image_1=image_1
    startTime = time.strftime('%S')
def end1():
    global startTime
    endTime = time.strftime('%S')
    calctimeTaken = int(endTime) - int(startTime)
    timeTaken = str(calctimetaken)

答案 1 :(得分:0)

这不是两个功能的问题吗?默认情况下,变量不在函数范围之外。您可以通过在函数外部声明它们并使用“全局startTime”在函数中声明它们,或者在外部声明它们然后将它们作为参数传递给函数来对此进行补救。

我怀疑您是从endTime或此处减去空值