0

내가 2 개 모듈이 스레드에서 항목 할당을 지원하지 않습니다형식 오류 : 'INT'객체는

먼저 Keyboard.py

import USB,evdev,threading,sys 

global codigo 
codigo = [1] 
class Teclado: 
    def __init__(self,port): 
     self.puerto = USB.usb(port) 
    def iniciar_teclado(self): 
     p = threading.Thread(target=self.puerto.obtener_evento,args=(codigo)) 
     p.start() 
     while 1: 
      if codigo[0] == evdev.ecodes.KEY_A: 
       print('A') 
      elif codigo[0] == evdev.ecodes.KEY_B: 
       print('B') 

및 USB.py : 그래서

import evdev,os,signal,sys 
class usb: 
    def __init__(self,dev): 
     self.device = evdev.InputDevice(dev) 
     print(self.device) 
    def obtener_evento(self,c): 
     for event in self.device.read_loop(): 
      if event.type == evdev.ecodes.EV_KEY and event.value == 1: 
       c[0] = event.code 

을 스레드에서 변수를 참조로 전달하려면 단일 요소 목록을 사용합니다. 도움, 다음 코드를 참조로 촬영되었습니다 : 라인에

>>> c = [1] 
>>> def f(list): 
>>>  list[0] = 'a' 
>>> f(c) 
>>> c[0] 
'a' 

하지만 내 코드에서

c[0] = event.code 

파이썬은 나에게

TypeError: 'int' object does not support item assignment 

어떤 도움을 말해?

답변

0

p = threading.Thread(target=self.puerto.obtener_evento,args=(codigo,)) 
시도