我在类外定义了一些列表对象,如下所示,
time_offset=[datetime.datetime(2018,9,25,9,15,0)]*len(symbol_list)
volume_offset=[0]*len(symbol_list)
timer_var=[datetime.datetime.now()]*len(symbol_list)
green_status=[0]*len(symbol_list)
我将以下方法编写在类中。
def updateWindow(self,stock,price_type):
global time_offset
global pass_if
global green_status
global red_status
global green_count
global red_count
idx=int(company_index_pair[stock])
if (datetime.datetime.now().minute)%5==0 and price_type==11 and pass_if[idx]==True:
pass_if[idx]=False
time_offset[idx]=datetime.datetime.now()
volume_offset[idx]=volume_list[idx]
if (datetime.datetime.now().minute)%5==1:
pass_if[idx]=True
time_fraction=(1+(datetime.datetime.now()-time_offset[idx]).seconds)/300
#avg vol for stock to be retrieved from excel file
change=(volume_list[idx]-volume_offset[idx])/(time_fraction*float(average_vol[stock]))
dvalues[idx].set(round(change,2))
entries[idx].config(textvariable=dvalues[idx])
if change>6.0:
labels2[idx].config(bg="blue")
elif change>2.0:
labels2[idx].config(bg="orange")
else:
labels2[idx].config(bg=mycolor)
avg1=(fifo_list[idx][0]+fifo_list[idx][1])/2
avg2=(fifo_list[idx][60]+fifo_list[idx][61])/2
avg3=(fifo_list[idx][118]+fifo_list[idx][119])/2
#labels[idx].config(text=fifo_list[idx][119])
#avg4=(fifo_list[idx][58]+fifo_list[idx][59])/2
if avg3>avg2>avg1:
green_status[idx]=1
green_count[idx]+=1
clabels[idx].config(text="("+str(green_count[idx]).zfill(3)+")")
labels[idx].config(bg=green_dark)
timer_var[idx]=datetime.datetime.now()
if avg3<avg2<avg1:
red_status[idx]=1
red_count[idx]+=1
clabels[idx].config(text="("+str(red_count[idx]).zfill(3)+")")
labels[idx].config(bg=red_dark)
timer_var[idx]=datetime.datetime.now()
if green_status[idx]==1 and (datetime.datetime.now()-timer_var[idx]).seconds>100:
labels[idx].config(bg=mycolor)
elif green_status[idx]==1 and (datetime.datetime.now()-timer_var[idx]).seconds>60:
labels[idx].config(bg=green_light)
elif green_status[idx]==1 and (datetime.datetime.now()-timer_var[idx]).seconds>30:
labels[idx].config(bg=green_medium)
我在下一行(上面代码中的botton的第六行)收到int对象不可更改的错误,
if green_status[idx]==1 and (datetime.datetime.now()-timer_var[idx]).seconds>100:
labels[idx].config(bg=mycolor)
green_status变量已被定义为列表,但是以某种方式将其视为int对象。 time_offset对象和pass_if以类似的方式定义,但是我没有得到它们的错误。请告知。
答案 0 :(得分:0)
恐怕这行
idx=int(company_index_pair[stock])
引起问题。您确定company_index_pair
和stock
的数据类型正确吗?
答案 1 :(得分:0)
如何定义标签?他们有可能成为int吗?当您遇到此类问题时,也可以粘贴准确的错误消息:)