代码如下:
这是声明startTime
和endTime
的地方。我不确定是否应该做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'
答案 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或此处减去空值