Qt for Python可以快速跨平台的GUI应用。这篇文章分享下如何结合Dynamsoft Barcode Reader SDK来创建一个简单的读码应用。
  
  安装Qt for Python
  
  官方站点可以下载对应的wheel文件,或者通过命令行安装:
  
  pip install pyside2
  
  我之前用Python 3.6无法成功加载Qt:
  
  Error:
  
  Traceback (most recent call last):
  
  File "test2.py", line 3, in <module>
  
  from PySide2.QtWidgets import (QApplication, QLabel, QPushButton, QVBoxLayout, QWidget)
  
  ImportError: DLL load failed: The specified procedure could not be found.
  
  换成Python 3.7之后就好了。
  
  安装Dynamsoft Barcode Reader
  
  下载barcode sdk。
  
  申请一个免费试用的license。
  
  获取extension源码,然后编译安装:
  
  python setup.py build install
  
  简单的Windows桌面扫码应用
  
  Qt安装之后可以用Qt designer来设计界面并生成Python代码。
  
  运行Python37\Lib\site-packages\PySide2\designer.exe。
  
  设计好界面之后保存到.ui文件。
  
  用Python37\Scripts\pyside2-uic.exe把.ui文件转换成Python文件:
  
  pyside2-uic -x *.ui -o ui.py
  
  之后可以直接运行这个Python文件。
  
  应用界面很简单。Button用于加载图片,Label用于显示图片,Text用于显示结果。
  
  import sys
  
  from PySide2.QtGui import QPixmap
  
  from PySide2.QtWidgets import QApplication, QLabel, QPushButton, QVBoxLayout, QWidget, QFileDialog, QTextEdit, QSizePolicy
  
  from PySide2.QtCore import Slot, Qt, QStringListModel, QSize
  
  import dbr
  
  import os
  
  class UI_Window(QWidget):
  
  def __init__(self):
  
  QWidget.__init__(self)
  
  # The default barcode image.
  
  dir_path = os.path.dirname(os.path.realpath(__file__))
  
  filename = os.path.join(dir_path, 'image.tif')
  
  # Create a layout.
  
  layout = QVBoxLayout()
  
  # Add a button
  
  self.btn = QPushButton("Load an image")
  
  self.btn.clicked.connect(self.pickFile)
  
  layout.addWidget(self.btn)
  
  # Add a label
  
  self.label = QLabel()
  
  self.label.setFixedSize(640, 640)
  
  pixmap = self.resizeImage(filename)
  
  self.label.setPixmap(pixmap)
  
  layout.addWidget(self.label)
  
  # Add a text area
  
  self.results = QTextEdit()
  
  self.readBarcode(filename)
  
  layout.addWidget(self.results)
  
  # Set the layout
  
  self.setLayout(layout)
  
  self.setWindowTitle("Dynamsoft Barcode Reader")
  
  self.setFixedSize(800, 800)
  
  点击按钮之后调用系统对话框来加载文件:
  
  def pickFile(self):
  
  # Load an image file.
  
  filename = QFileDialog.getOpenFileName(self, 'Open file',
  
  'E:\\Program Files (x86)\\Dynamsoft\\Barcode Reader 6.4.1\\Images', "Barcode images (*)")
  
  # Show barcode images
  
  pixmap = self.resizeImage(filename[0])
  
  self.label.setPixmap(pixmap)
  
  # Read barcodes
  
  self.readBarcode(filename[0])
  
  调节图片尺寸,让图片显示在固定区域内:
  
  def resizeImage(self, filename):
  
  pixmap = QPixmap(filename)
  
  lwidth = self.label.maximumWidth()
  
  pwidth = pixmap.width()
  
  lheight = self.label.maximumHeight()
  
  pheight = pixmap.height(www.meiwanyule.cn/ )
  
  wratio = pwidth * 1.0 / lwidth
  
  hratio = pheight * 1.0 / lheight
  
  if pwidth > lwidth or pheight > lheight:
  
  if wratio > hratio:
  
  lheight = pheight / wratio
  
  else:
  
  lwidth = pwidth / hratio
  
  scaled_pixmap = pixmap.www.tiaotiaoylzc.com/ scaled(lwidth, lheight)
  
  return scaled_pixmap
  
  else:
  
  return pixmap
  
  调用barcode接口识别条形码:
  
  def readBarcode(self, filename):
  
  dbr.initLicense("<Your License>")
  
  results = dbr.decodeFile(filename, 0x3FF | 0x2000000 | 0x4000000 | 0x8000000 | 0x10000000)
  
  out = ''
  
  index = 0
  
  for result in results:
  
  out += "Index: " + str(www.hengda157.com index) + "\n"
  
  out += "Barcode format:www.lezongyule.com " + result[0] + '\n'
  
  out += "Barcode value: " + result[1] + '\n'
  
  out += '-----------------------------------\n'
  
  index += 1
  
  self.results.setText(out)
  
  运行程序:
  
  python barcode-reader.py

如何用Qt Python创建简单的桌面条形码应用的更多相关文章

  1. Python创建、删除桌面、启动组快捷方式的例子分享

    一.Python创桌面建快捷方式的2个例子 例子一: 代码如下: import osimport pythoncomfrom win32com.shell import shell    from w ...

  2. python创建简单网站

    前言 本方法基于web2py框架,使用web2py的完整网站数据包创建简单网站. web2py 是一个为Python语言提供的全功能Web应用框架,旨在敏捷快速的开发Web应用,具有快速.安全以及可移 ...

  3. 使用Python创建简单的HTTP和FTP服务

    不管工作中还是其他场合,经常会有文件分享的需求,比如自己下了一个4GB的游戏,同事下了一个800MB的软件,其他人如果也需要这些文件,显然直接分享是最快捷.最方便.最环保的方式了,如果再重新下,既浪费 ...

  4. Python——一个简单的类的创建和应用

    1.创建类,设置属性和给属性设定默认值,设置方法并访问类的属性: 2.利用类创建多个实例,以及调用类的方法的两种办法: 3.设置更新属性的函数,并更新实例的属性. class dog(object): ...

  5. Python爬虫简单实现CSDN博客文章标题列表

    Python爬虫简单实现CSDN博客文章标题列表 操作步骤: 分析接口,怎么获取数据? 模拟接口,尝试提取数据 封装接口函数,实现函数调用. 1.分析接口 打开Chrome浏览器,开启开发者工具(F1 ...

  6. Python 实现简单的 Web

    简单的学了下Python, 然后用Python实现简单的Web. 因为正在学习计算机网络,所以通过编程来加强自己对于Http协议和Web服务器的理解,也理解下如何实现Web服务请求.响应.错误处理以及 ...

  7. Python 创建本地服务器环境生成二维码

    一. 需求 公司要做一个H5手机端适配页面,因技术问题所以H5是外包的,每次前端给我们源码,我们把源码传到服务器让其他人访问看是否存在bug,这个不是很麻烦吗?有人说,可以让前端在他们的服务器上先托管 ...

  8. VC++ 实现简单的桌面截图

    使用了EasyX图像库,使用方法请参考:VC++ 制作一个简易的控制台时钟应用 简单的桌面截图代码: ///////////////////////////////////////////////// ...

  9. Python创建list和按照索引访问list

    Python创建list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.比如,列出班里所有同学的名字,就可以用一个list表示:>> ...

随机推荐

  1. win10 Docker Toolbox 默认路径不能写问题

    2018-8-30 这几天正学习docker,win10系统家庭版,未升级成专业版,只能安装Docker Toolbox来练习, 安装好后准备做个镜像,默认路径新建目录却提示不允许创建 由于Docke ...

  2. QSS 样式示例:QTreeWidget, QComboBox,QSlider,QSpinBox

    目录 Image 填充整个控件的区域 QTreeWidget QSpinbox 的上翻下翻按钮和箭头 QComboBox 的设置,大坑 QSlider 最近需要对一个软件加上Qt界面和 的样式,第一次 ...

  3. day09,10 函数

    一.函数 什么是函数 函数: 对代码块和功能的封装和定义 定义一个事情或者功能. 等到需要的时候直接去用就好了. 那么这里定义的东西就是一个函数. 语法: def 函数名(形参): 函数体 函数名(实 ...

  4. eos对数据库的操作

    eosio的multi_index 概述 multi_index是eosio上的数据库管理接口,通过eosio::multi_index智能合约能够写入.读取和修改eosio数据库的数据 multi_ ...

  5. scrapy-redis+selenium+webdriver 部署到linux上

    背景:在使用selenium时,在本地使用windows,都会有一个图形界面,但是到了生产环境linux上没有了图形界面怎么部署呢? 解决方案: 1.安装图形化界面,不推荐,因为安装图形化界面会占用很 ...

  6. 苹果全球营销高级副总裁Phil Schiller曾考虑炒掉长期创意代理商Media Arts Lab

    来自<华尔街日报>消息,从去年开始,三星就利用广告来讽刺苹果产品.苹果全球营销高级副总裁菲尔•席勒(Phil Schiller)曾一度考虑炒掉该公司的长期创意代理商Media Arts L ...

  7. KETTLE:mongdb与mysql互传数据

    注:部分内容引用了 http://blog.sina.com.cn/s/blog_4ac9f56e0101g881.html 1.mongodb传数据到mysql 1)在kettle中,mongodb ...

  8. angularjs工作原理解析

    个人觉得,要很好的理解AngularJS的运行机制,才能尽可能避免掉到坑里面去.在这篇文章中,我将根据网上的资料和自己的理解对AngularJS的在启动后,每一步都做了些什么,做一个比较清楚详细的解析 ...

  9. PHP中的变量名,函数名,类名是区分大小写的吗

    在PHP中,自定义的函数名,类名,以及内置的函数,关键字是不区分大小写的,比如: class,Class,CLASS,while,While,ECHO,echo,NULL,Null 都是一样的. 但是 ...

  10. Planning The Expedition(暴力枚举+map迭代器)

    Description Natasha is planning an expedition to Mars for nn people. One of the important tasks is t ...