lsalvatore lsalvatore - 1 year ago 159
Python Question

TypeError: 'int' object does not support item assignment, In threads

I have 2 modules:


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))
while 1:
if codigo[0] == evdev.ecodes.KEY_A:
elif codigo[0] == evdev.ecodes.KEY_B:


import evdev,os,signal,sys
class usb:
def __init__(self,dev):
self.device = evdev.InputDevice(dev)
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

So to pass by reference a variable in a thread, i use a list of a single element. As help, the following code has been taken as reference:

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

but in my code, in the line

c[0] = event.code

python tell me

TypeError: 'int' object does not support item assignment

Some help?

Answer Source


p = threading.Thread(target=self.puerto.obtener_evento,args=(codigo,))
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download