簡體   English   中英

python錯誤:TypeError:必須為整數

[英]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的類型為intprog_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM