[英]python error: TypeError: an integer is required
我正在将自己的python列表存储在数组中,因此我正在使用python脚本。
当我尝试将每个元素放入getControl
以允许我更改宽度大小时,我遇到了一个非常奇怪的错误。 我可以毫无问题地从数组中获取元素列表。
当我尝试这个:
programs_width = list()
for pos_X, prog_width, prog_ids in zip(program_X, program_width, program_id):
if pos_X == '1073':
#30 mins
if prog_width == '342':
programs_width = 181
#1 hour
if prog_width == '691':
programs_width = 181
#need to find out how to get the programs_width outside
print programs_width
print prog_ids
self.getControl(prog_ids).setWidth(programs_width)
它给我一个错误:
01:03:24 T:2084 ERROR: Exception in thread All_Channels_BACKUP_thread:
Traceback (most recent call last):
File "C:\Program Files (x86)\XBMC\system\python\Lib\threading.py", line 532, in __bootstrap_inner
self.run()
File "C:\Users\user\AppData\Roaming\XBMC\addons\script.tvguide\test.py", line 8158, in run
self.xtarget()
File "C:\Users\user\AppData\Roaming\XBMC\addons\script.tvguide\test.py", line 1410, in All_Channels_BACKUP self.getControl(str(prog_ids)).setWidth(str(programs_width))
TypeError: an integer is required
错误在此行上跳跃:
self.getControl(prog_ids).setWidth(programs_width)
这是宽度和ID的输出:
01:13:18 T:5032 NOTICE: 181
01:13:18 T:5032 NOTICE: 3072
01:13:18 T:5032 NOTICE: 181
01:13:18 T:5032 NOTICE: 3211
01:13:18 T:5032 NOTICE: 181
01:13:18 T:5032 NOTICE: 3279
01:13:18 T:5032 NOTICE: 181
01:13:18 T:5032 NOTICE: 3348
01:13:18 T:5032 NOTICE: 181
01:13:18 T:5032 NOTICE: 3417
我不知道为什么会出错,我要做的就是使用变量prog_ids
从数组中获取每个元素,然后将每个id放入getcontrol
然后再使用变量programs_width
更改每个getcontrol
的宽度大小。时间。 program_width
的类型为int
, prog_id
的类型为str
(字符串)。
您知道我为什么会出错并且知道如何解决吗?
编辑:我意识到问题来自此行:
elif pos_X == '1073':
这是元素列表:
15:34:08 T:5872 NOTICE: 375
15:34:08 T:5872 NOTICE: 724
15:34:08 T:5872 NOTICE: 2804
15:34:08 T:5872 NOTICE: 5226
15:34:08 T:5872 NOTICE: 5924
15:34:08 T:5872 NOTICE: 6273
15:34:08 T:5872 NOTICE: 6622
15:34:08 T:5872 NOTICE: 6971
15:34:08 T:5872 NOTICE: 7320
15:34:08 T:5872 NOTICE: 7669
15:34:08 T:5872 NOTICE: 8018
15:34:08 T:5872 NOTICE: 8716
15:34:08 T:5872 NOTICE: 9065
15:34:08 T:5872 NOTICE: 9414
15:34:08 T:5872 NOTICE: 9763
15:34:08 T:5872 NOTICE: 10112
15:34:08 T:5872 NOTICE: 10461
15:34:08 T:5872 NOTICE: 10810
15:34:08 T:5872 NOTICE: 11159
15:34:08 T:5872 NOTICE: 11508
15:34:08 T:5872 NOTICE: 11857
15:34:08 T:5872 NOTICE: 12206
15:34:08 T:5872 NOTICE: 13937
15:34:08 T:5872 NOTICE: 14635
15:34:08 T:5872 NOTICE: 14984
15:34:08 T:5872 NOTICE: 15333
15:34:08 T:5872 NOTICE: 15682
15:34:08 T:5872 NOTICE: 16031
15:34:08 T:5872 NOTICE: 16380
15:34:08 T:5872 NOTICE: 16729
15:34:08 T:5872 NOTICE: 17078
15:34:08 T:5872 NOTICE: 17427
15:34:08 T:5872 NOTICE: 17776
15:34:08 T:5872 NOTICE: 18125
15:34:08 T:5872 NOTICE: 18474
15:34:08 T:5872 NOTICE: 18823
15:34:08 T:5872 NOTICE: 19172
15:34:08 T:5872 NOTICE: 19521
15:34:08 T:5872 NOTICE: 19870
15:34:08 T:5872 NOTICE: 20219
15:34:08 T:5872 NOTICE: 20568
15:34:08 T:5872 NOTICE: 20917
15:34:08 T:5872 NOTICE: 22648
15:34:08 T:5872 NOTICE: 23346
15:34:08 T:5872 NOTICE: 23695
15:34:08 T:5872 NOTICE: 24044
15:34:08 T:5872 NOTICE: 24393
15:34:08 T:5872 NOTICE: 24742
15:34:08 T:5872 NOTICE: 25091
15:34:08 T:5872 NOTICE: 25440
15:34:08 T:5872 NOTICE: 26138
15:34:08 T:5872 NOTICE: 26487
15:34:08 T:5872 NOTICE: 26836
15:34:08 T:5872 NOTICE: 27185
15:34:08 T:5872 NOTICE: 27534
15:34:08 T:5872 NOTICE: 27883
15:34:08 T:5872 NOTICE: 28232
15:34:08 T:5872 NOTICE: 28581
15:34:08 T:5872 NOTICE: 28930
15:34:08 T:5872 NOTICE: 29279
15:34:08 T:5872 NOTICE: 29628
15:34:08 T:5872 NOTICE: 31359
15:34:08 T:5872 NOTICE: 32057
15:34:08 T:5872 NOTICE: 32406
15:34:08 T:5872 NOTICE: 32755
15:34:08 T:5872 NOTICE: 33104
15:34:08 T:5872 NOTICE: 33453
15:34:08 T:5872 NOTICE: 33802
15:34:08 T:5872 NOTICE: 34151
15:34:08 T:5872 NOTICE: 375
15:34:08 T:5872 NOTICE: 1073
15:34:08 T:5872 NOTICE: 3153
问题在于, programs_width
是一个列表。
programs_width = list()
如果这些都不是if
语句
if prog_width == '342':
programs_width = 181
#1 hour
if prog_width == '691':
programs_width = 181
触发,然后programs_width
仍然是此处的列表:
self.getControl(prog_ids).setWidth(programs_width)
这会导致错误。
您的引号使这些值成为字符串,而不是整数。 删除值上的引号。 此外,错误消息清楚地指示错误的行:
self.getControl(str(prog_ids)).setWidth(str(programs_width))
请注意,您正在将参数显式转换为带有“ str”的字符串。 使用“ int”代替:
self.getControl(str(prog_ids)).setWidth(int(programs_width))
...或如果您知道输入已经是整数,则忽略转换算法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.