2014-12-27 4 views
0

배열의 요소 목록이 저장되어 있으므로 파이썬 스크립트에서 작업하고 있습니다.python 오류 : TypeError : 정수가 필요합니다.

getControl에 각 요소를 넣으려고하면 매우 이상한 오류가 발생하여 너비 크기를 변경할 수 있습니다. 어떤 문제도없이 배열에서 요소 목록을 얻을 수 있습니다.

나는이 때 :

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 

오류가이 선에 점프 :

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) 

를 그것은 나에게 오류주고 여기에

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을 사용하여 각 요소를 배열에서 가져 와서 getcontrol에 각 ID를 입력 한 후에 변수를 사용할 수 있습니다. programs_width 변경하려면 각 폭의 폭 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 
+0

'self.getControl (prog_ids) .setWidth (int (programs_width))' –

+0

@AvinashRaj 대단히 감사합니다. 그러나 코드를 변경하면 여전히 동일한 오류가 발생합니다.왜 아직도 같은 오류가 발생하는지 아십니까? –

+1

당신은 그 에러가'self.getControl (prog_ids) .setWidth (programs_width)'라인에 있다고하지만, 역 추적에서는 라인이 실제로'self.getControl (str (prog_ids))라고합니다.))'. 이렇게하면 자신이 생각하는 코드를 실행하고 있는지 또는 유형이 무엇인지에 대해 올바른지 여부를 알기가 어렵습니다. – DSM

답변

4

문제는 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) 

오류가 발생합니다.

+0

@Rawling, 조언 해 주셔서 감사합니다. 문제를 해결하기 위해 무엇을해야하는지 알고 있습니까? –

+0

@David : 코드에서 무엇을해야할지 모르겠다.하지만 두 개의 if 문이 트리거되지 않을 때 사용되는 기본값을 설정해야한다고 생각한다. (정수!) –

+0

나는 값을 비교하여 그 값과 일치하는지 확인하려고 노력 중입니다. 문제를 해결하려면 어떻게해야합니까? 값에 대한 따옴표를 제거 하시겠습니까? –

0

귀하의 인용이 값 문자열이 아닌 정수를 만들고 그 문제는이 라인에서 오는 것을 깨달았다. 값에 따옴표를 제거하십시오. 또한 오류 메시지는 분명히 잘못된 줄을 나타냅니다.

self.getControl(str(prog_ids)).setWidth(str(programs_width)) 

"str"이있는 문자열로 매개 변수를 명시 적으로 변환하고 있습니다. 대신에 "int"를 사용하십시오 : 입력이 이미 정수인 경우 변환 옥토 그래퍼를 생략하거나 생략하십시오.

self.getControl(str(prog_ids)).setWidth(int(programs_width)) 

...을 사용하거나 생략하십시오.

+0

내 값에서 따옴표를 제거했지만 여전히 동일한 오류가 발생합니다. 그리고 나는'self.getControl (str (prog_ids)). setWidth (int (programs_width))'로 시도했다. 왜 그리고 무엇이 잘못되었는지 알고 있습니까? : S –

+0

당신은 어떤 생각을 가지고 있습니까 ???? –

관련 문제