0

我有2個模塊:類型錯誤: '詮釋' 對象不支持項目的分配,在線程

首先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,)) 
相關問題