我在试着捕捉条形码扫描。举个例子,在Tkinter,我可以这样做:
标签:
self.code = ' '
self.status = tk.Label(frameStatus, text="Scanner is waiting...")
self.status.config(height=20, bd=1, relief=SUNKEN, anchor=W)
self.status.pack(side=BOTTOM, fill=X)
self.bind('<Key>', self.get_key)职能:
def get_key(self, event):
if event.char in '0123456789':
self.code += event.char
self.status['text'] = "Searching UPC Code: " + self.code
elif self.status == self.status:
self.animate()
self.status.after(2000)
self.status['text'] = "Scanner is Waiting..."
self.get_info()
self.code = ' '现在在Kivy中,我在class MsgAppApp(App):中有绑定到我将要更改的标签的代码:
class MsgAppApp(App):
def build(self):
self.main_screen = MsgApp()
return self.main_screen
def on_start(self):
Clock.schedule_interval(self.main_screen.update_date, 1)
Clock.schedule_interval(self.main_screen.update_time, 1)
Window.bind(on_keyboard = self.main_screen.item_added)这句话:
Window.bind(on_keyboard = self.main_screen.item_added)指的是一个名为item_added的函数,它将对标签进行更改,但问题是,当我扫描时,我只得到scancode。不是条形码的实际数字。真的没问题,因为我可以编一本字典,把这些数字转换成实际的数字。例如,代码号"48“指的是数字"0",代码"49”到"1",等等。最大的问题是我只能得到最后一个scancode。这是我的功能:
def item_added(self, instance, scancode, *largs):
scancodes = [ ]
scancodes.append(scancode)
print(scancodes)从现在开始我只是打印到终端。我在终端机上得到了一行代码,比如:
48
55
56
55
52
50
50
51
48
49
57
49
13顺便说一句,13 (最后)总是会弹出。在大多数条形码中只有12位数。如果我把它存储在一个变量中,那就是变量中的数字,13,就像变量没有保存所有的数字一样。我尝试过for循环,但无法将这些scancodes存储在变量中,或者更合适的情况下,存储在列表中。它大约有90%,但不知道如何将这些代码存储在列表中。任何帮助都将不胜感激。
发布于 2017-09-22 16:24:21
通过在您的方法中放置"scancodes = []“,该列表将在每次调用item_added时创建并销毁。
使用Kivy ListProperty如下所示:
片段
from kivy.properties import ListProperty
...
class MsgApp(...):
scancodes = ListProperty([]) # creates an empty list
....
def item_added(self, instance, scancode, *largs):
self.scancodes.append(scancode)
print(self.scancodes)https://stackoverflow.com/questions/46355204
复制相似问题