首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >USB条形码扫描器和kivy

USB条形码扫描器和kivy
EN

Stack Overflow用户
提问于 2017-09-22 00:41:00
回答 1查看 907关注 0票数 0

我在试着捕捉条形码扫描。举个例子,在Tkinter,我可以这样做:

标签:

代码语言:javascript
复制
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)

职能:

代码语言:javascript
复制
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):中有绑定到我将要更改的标签的代码:

代码语言:javascript
复制
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)

这句话:

代码语言:javascript
复制
Window.bind(on_keyboard = self.main_screen.item_added)

指的是一个名为item_added的函数,它将对标签进行更改,但问题是,当我扫描时,我只得到scancode。不是条形码的实际数字。真的没问题,因为我可以编一本字典,把这些数字转换成实际的数字。例如,代码号"48“指的是数字"0",代码"49”到"1",等等。最大的问题是我只能得到最后一个scancode。这是我的功能:

代码语言:javascript
复制
def item_added(self, instance, scancode, *largs):
   scancodes = [ ]
   scancodes.append(scancode)
   print(scancodes)

从现在开始我只是打印到终端。我在终端机上得到了一行代码,比如:

代码语言:javascript
复制
48
55
56
55
52
50
50
51
48
49
57
49
13

顺便说一句,13 (最后)总是会弹出。在大多数条形码中只有12位数。如果我把它存储在一个变量中,那就是变量中的数字,13,就像变量没有保存所有的数字一样。我尝试过for循环,但无法将这些scancodes存储在变量中,或者更合适的情况下,存储在列表中。它大约有90%,但不知道如何将这些代码存储在列表中。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-22 16:24:21

通过在您的方法中放置"scancodes = []“,该列表将在每次调用item_added时创建并销毁。

使用Kivy ListProperty如下所示:

片段

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46355204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档