pywinusb로 HID의 데이터를 동시에 읽은 다음 해당 데이터로 tkinter 창을 업데이트하려고합니다. HID 측에서 무언가가 일어날 때, 나는 tkinter 창에 즉시 그 변화가 반영되기를 바랍니다.Python + Tkinter : HID에서 데이터를 읽고 tkinter 라벨을 동시에 업데이트
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\Python 3.3\lib\tkinter\__init__.py", line 1442, in __call__
return self.func(*args)
File "C:\Program Files\Python 3.3\lib\tkinter\__init__.py", line 501, in callit
func(*args)
TypeError: update_data1() missing 1 required positional argument: 'data'
내 질문은 추측 :
내가 코드를 실행하고 장치가 데이터를 송신 할 때
import pywinusb.hid as hid
from tkinter import *
class MyApp(Frame):
def __init__(self, master):
super(MyApp, self).__init__(master)
self.grid()
self.setupWidgets()
self.receive_data()
def setupWidgets(self):
self.data1 = StringVar()
self.data1_Var = Label(self, textvariable = self.data1)
self.data1_Var.grid(row = 0, column = 0, sticky = W)
def update_data1(self, data):
self.data1.set(data)
self.data1_Var.after(200, self.update_data1)
def update_all_data(self, data):
self.update_data1(data[1])
#self.update_data2(data[2]), all points updated here...
def receive_data(self):
self.all_hids = hid.find_all_hid_devices()
self.device = self.all_hids[0]
self.device.open()
#sets update_all_data as data handler
self.device.set_raw_data_handler(self.update_all_data)
root = Tk()
root.title("Application")
root.geometry("600x250")
window = MyApp(root)
window.mainloop()
, 나는이 오류가 : 여기
코드입니다 HID의 현재 데이터로 라벨을 계속 업데이트하려면 어떻게해야합니까? 새 데이터를 update_data1()에 전달하려면 어떻게해야합니까?편집 : 하나의 스레드가 데이터를 받고 mainloop() 스레드가 정기적으로 새 데이터를 확인하도록 스레딩을 사용해야합니까? 전에 스레딩을 사용하지 않았지만 이것이 해결책 일 수 있습니까?
더 좋은 방법이 있다면 알려주세요.
감사합니다.