在线程之前打开BoxLayout并保持线程监听

时间:2018-06-11 08:10:36

标签: python multithreading kivy evdev

我想要一个Box布局,我将放置一个文本,当我点击不同的keyborad的键时应该改变,Ritgth现在我试图在线程运行的同时显示BoxLayout但它没有显示  这是我的代码:

   def funcion():
    dev = InputDevice('/dev/input/by-id/usb-Logitech_USB_Keyboard-event-kbd')
    # Provided as an example taken from my own keyboard attached to a Centos 6 box:
    scancodes = {
        # Scancode: ASCIICode
        0: None, 1: u'ESC', 2: u'1', 3: u'2', 4: u'3', 5: u'4', 6: u'5', 7: u'6', 8: u'7', 9: u'8',
        10: u'9', 11: u'0', 12: u'-', 13: u'=', 14: u'BKSP', 15: u'TAB', 16: u'Q', 17: u'W', 18: u'E', 19: u'R',
        20: u'T', 21: u'Y', 22: u'U', 23: u'I', 24: u'O', 25: u'P', 26: u'[', 27: u']', 28: u'CRLF', 29: u'LCTRL',
        30: u'A', 31: u'S', 32: u'D', 33: u'F', 34: u'G', 35: u'H', 36: u'J', 37: u'K', 38: u'L', 39: u';',
        40: u'"', 41: u'`', 42: u'LSHFT', 43: u'\\', 44: u'Z', 45: u'X', 46: u'C', 47: u'V', 48: u'B', 49: u'N',
        50: u'M', 51: u',', 52: u'.', 53: u'/', 54: u'RSHFT', 56: u'LALT', 100: u'RALT'
    }

    for event in dev.read_loop():
        if event.type == evdev.ecodes.EV_KEY:
            data = evdev.categorize(event)  # Save the event temporarily to introspect it
            if data.keystate == 1:  # Down events only
                key_lookup = scancodes.get(data.scancode) or u'UNKNOWN:{}'.format(data.scancode)  # Lookup or return UNKNOWN:XX
                print(u'You Pressed the {} key!'.format(key_lookup))  # Print it all out!



class Controller(BoxLayout):
    def do_action(self):
        self.label.text = 'After'
    def do_action2(self):
        self.label.text = 'Before' 

    _thread.start_new_thread ( funcion() )




class MainApp(App):
    title="Hola mundo"
    def build(self):
        return Controller()

if __name__=='__main__':
   app= MainApp()
   app.run()

1 个答案:

答案 0 :(得分:0)

问题是我以错误的方式做线程, 我在此页面中得到了我的问题的答案:https://github.com/gvalkov/python-evdev/issues/15