最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)的二維碼生成小軟件

 更新時(shí)間:2014年07月11日 09:00:30   投稿:junjie  
這篇文章主要介紹了Python實(shí)現(xiàn)的二維碼生成小軟件,使用wxPython、python-qrcode、pyqrcode、pyqrnative等技術(shù)和開(kāi)源類(lèi)庫(kù)實(shí)現(xiàn),需要的朋友可以參考下

前幾天,我估摸著做一個(gè)能生成QR Code小程序,并能用wxPython在屏幕上顯示出來(lái)。當(dāng)然,我想用純Python實(shí)現(xiàn),觀望了一會(huì)后,我找到了三個(gè)候選:

github 上的 python-qrcode
sourceforge上的 pyqrcode
Goolge code 上的 pyqrnative

我嘗試了python-qrcode以及pyqrnative,因?yàn)樗鼈兡軌蜻\(yùn)行在Windows/Mac/Linux。也不需要依賴(lài)額外的其他庫(kù)除了Python圖像庫(kù)。pyqrcode項(xiàng)目需要其他一些先決條件,并且不能在Windows上運(yùn)行,所以我不想與之糾纏了。我最后使用了一些以前寫(xiě)過(guò)的一個(gè)Photo Viewer程序的代碼,然后稍微地修改了一下,就成了QRCode的查看器了。

開(kāi)始

正如我上面提到的,你只需要Python圖像庫(kù),GUI部分我們將使用wxPython。python-qrcode相比pyqrnative生成圖片更快,并包含了你見(jiàn)過(guò)的大多數(shù)QR碼類(lèi)型。

生成 QR Codes

當(dāng)你準(zhǔn)備好所有需要的以后,你可以運(yùn)行以下代碼,看看Python做了些啥:

import os
import wx
 
try:
  import qrcode
except ImportError:
  qrcode = None
 
try:
  import PyQRNative
except ImportError:
  PyQRNative = None
 
########################################################################
class QRPanel(wx.Panel):
  """"""
 
  #----------------------------------------------------------------------
  def __init__(self, parent):
    """Constructor"""
    wx.Panel.__init__(self, parent=parent)
    self.photo_max_size = 240
    sp = wx.StandardPaths.Get()
    self.defaultLocation = sp.GetDocumentsDir()
 
    img = wx.EmptyImage(240,240)
    self.imageCtrl = wx.StaticBitmap(self, wx.ID_ANY,
                     wx.BitmapFromImage(img))
 
    qrDataLbl = wx.StaticText(self, label="Text to turn into QR Code:")
    self.qrDataTxt = wx.TextCtrl(self, value="http://www.mousevspython.com", size=(200,-1))
    instructions = "Name QR image file"
    instructLbl = wx.StaticText(self, label=instructions)
    self.qrPhotoTxt = wx.TextCtrl(self, size=(200,-1))
    browseBtn = wx.Button(self, label='Change Save Location')
    browseBtn.Bind(wx.EVT_BUTTON, self.onBrowse)
    defLbl = "Default save location: " + self.defaultLocation
    self.defaultLocationLbl = wx.StaticText(self, label=defLbl)
 
    qrcodeBtn = wx.Button(self, label="Create QR with qrcode")
    qrcodeBtn.Bind(wx.EVT_BUTTON, self.onUseQrcode)
    pyQRNativeBtn = wx.Button(self, label="Create QR with PyQRNative")
    pyQRNativeBtn.Bind(wx.EVT_BUTTON, self.onUsePyQR)
 
    # Create sizer
    self.mainSizer = wx.BoxSizer(wx.VERTICAL)
    qrDataSizer = wx.BoxSizer(wx.HORIZONTAL)
    locationSizer = wx.BoxSizer(wx.HORIZONTAL)
    qrBtnSizer = wx.BoxSizer(wx.VERTICAL)
 
    qrDataSizer.Add(qrDataLbl, 0, wx.ALL, 5)
    qrDataSizer.Add(self.qrDataTxt, 1, wx.ALL|wx.EXPAND, 5)
    self.mainSizer.Add(wx.StaticLine(self, wx.ID_ANY),
              0, wx.ALL|wx.EXPAND, 5)
    self.mainSizer.Add(qrDataSizer, 0, wx.EXPAND)
    self.mainSizer.Add(self.imageCtrl, 0, wx.ALL, 5)
    locationSizer.Add(instructLbl, 0, wx.ALL, 5)
    locationSizer.Add(self.qrPhotoTxt, 0, wx.ALL, 5)
    locationSizer.Add(browseBtn, 0, wx.ALL, 5)
    self.mainSizer.Add(locationSizer, 0, wx.ALL, 5)
    self.mainSizer.Add(self.defaultLocationLbl, 0, wx.ALL, 5)
 
    qrBtnSizer.Add(qrcodeBtn, 0, wx.ALL, 5)
    qrBtnSizer.Add(pyQRNativeBtn, 0, wx.ALL, 5)
    self.mainSizer.Add(qrBtnSizer, 0, wx.ALL|wx.CENTER, 10)
 
    self.SetSizer(self.mainSizer)
    self.Layout()
 
  #----------------------------------------------------------------------
  def onBrowse(self, event):
    """"""
    dlg = wx.DirDialog(self, "Choose a directory:",
              style=wx.DD_DEFAULT_STYLE)
    if dlg.ShowModal() == wx.ID_OK:
      path = dlg.GetPath()
      self.defaultLocation = path
      self.defaultLocationLbl.SetLabel("Save location: %s" % path)
    dlg.Destroy()
 
  #----------------------------------------------------------------------
  def onUseQrcode(self, event):
    """
    https://github.com/lincolnloop/python-qrcode
    """
    qr = qrcode.QRCode(version=1, box_size=10, border=4)
    qr.add_data(self.qrDataTxt.GetValue())
    qr.make(fit=True)
    x = qr.make_image()
 
    qr_file = os.path.join(self.defaultLocation, self.qrPhotoTxt.GetValue() + ".jpg")
    img_file = open(qr_file, 'wb')
    x.save(img_file, 'JPEG')
    img_file.close()
    self.showQRCode(qr_file)
 
  #----------------------------------------------------------------------
  def onUsePyQR(self, event):
    """

http://code.google.com/p/pyqrnative/

    """
    qr = PyQRNative.QRCode(20, PyQRNative.QRErrorCorrectLevel.L)
    qr.addData(self.qrDataTxt.GetValue())
    qr.make()
    im = qr.makeImage()
 
    qr_file = os.path.join(self.defaultLocation, self.qrPhotoTxt.GetValue() + ".jpg")
    img_file = open(qr_file, 'wb')
    im.save(img_file, 'JPEG')
    img_file.close()
    self.showQRCode(qr_file)
 
  #----------------------------------------------------------------------
  def showQRCode(self, filepath):
    """"""
    img = wx.Image(filepath, wx.BITMAP_TYPE_ANY)
    # scale the image, preserving the aspect ratio
    W = img.GetWidth()
    H = img.GetHeight()
    if W > H:
      NewW = self.photo_max_size
      NewH = self.photo_max_size * H / W
    else:
      NewH = self.photo_max_size
      NewW = self.photo_max_size * W / H
    img = img.Scale(NewW,NewH)
 
    self.imageCtrl.SetBitmap(wx.BitmapFromImage(img))
    self.Refresh()
 
 
########################################################################
class QRFrame(wx.Frame):
  """"""
 
  #----------------------------------------------------------------------
  def __init__(self):
    """Constructor"""
    wx.Frame.__init__(self, None, title="QR Code Viewer", size=(550,500))
    panel = QRPanel(self)
 
if __name__ == "__main__":
  app = wx.App(False)
  frame = QRFrame()
  frame.Show()
  app.MainLoop()

python-qrcode生成效果圖:

PyQRNative生成效果圖:

相關(guān)文章

  • Python連接mysql數(shù)據(jù)庫(kù)及簡(jiǎn)單增刪改查操作示例代碼

    Python連接mysql數(shù)據(jù)庫(kù)及簡(jiǎn)單增刪改查操作示例代碼

    這篇文章主要介紹了Python連接mysql數(shù)據(jù)庫(kù)及簡(jiǎn)單增刪改查操作示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 基于python編寫(xiě)一個(gè)車(chē)型識(shí)別小程序

    基于python編寫(xiě)一個(gè)車(chē)型識(shí)別小程序

    基于Python制作一個(gè)車(chē)型識(shí)別小程序,可用于拍照識(shí)車(chē),根據(jù)拍攝照片,快速識(shí)別圖片中車(chē)輛的品牌型號(hào),文章通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-10-10
  • PyQt5+QtChart繪制散點(diǎn)圖

    PyQt5+QtChart繪制散點(diǎn)圖

    QChart是一個(gè)QGraphicScene中可以顯示的QGraphicsWidget。本文將利用QtChart實(shí)現(xiàn)繪制散點(diǎn)圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-12-12
  • 詳解Python如何利用pymysql封裝項(xiàng)目通用的連接和查詢

    詳解Python如何利用pymysql封裝項(xiàng)目通用的連接和查詢

    一個(gè)項(xiàng)目通常都需要有數(shù)據(jù)庫(kù),本文就來(lái)為大家詳細(xì)講講Python如何利用pymysql簡(jiǎn)單分裝一個(gè)通用的連接,關(guān)閉和查詢,需要的可以參考一下
    2022-07-07
  • 解決pycharm中導(dǎo)入自己寫(xiě)的.py函數(shù)出錯(cuò)問(wèn)題

    解決pycharm中導(dǎo)入自己寫(xiě)的.py函數(shù)出錯(cuò)問(wèn)題

    今天小編就為大家分享一篇解決pycharm中導(dǎo)入自己寫(xiě)的.py函數(shù)出錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python程序包的構(gòu)建和發(fā)布過(guò)程示例詳解

    Python程序包的構(gòu)建和發(fā)布過(guò)程示例詳解

    Python程序包的構(gòu)建和發(fā)布過(guò)程,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-06-06
  • Python3.7實(shí)現(xiàn)驗(yàn)證碼登錄方式代碼實(shí)例

    Python3.7實(shí)現(xiàn)驗(yàn)證碼登錄方式代碼實(shí)例

    這篇文章主要介紹了Python3.7實(shí)現(xiàn)驗(yàn)證碼登錄方式代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python 實(shí)現(xiàn)屏幕錄制示例

    python 實(shí)現(xiàn)屏幕錄制示例

    今天小編就為大家分享一篇python 實(shí)現(xiàn)屏幕錄制示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • 關(guān)于Python 位運(yùn)算防坑指南

    關(guān)于Python 位運(yùn)算防坑指南

    這篇文章主要介紹了關(guān)于Python 位運(yùn)算防坑指南,小編將劇烈向大家說(shuō)明并且列舉python及C#兩種語(yǔ)言,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • Python機(jī)器學(xué)習(xí)之AdaBoost算法

    Python機(jī)器學(xué)習(xí)之AdaBoost算法

    今天帶大家來(lái)學(xué)習(xí)Python機(jī)器學(xué)習(xí),文中對(duì)AdaBoost算法介紹的很詳細(xì),有非常多的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05

最新評(píng)論

晴隆县| 淮南市| 买车| 健康| 新河县| 皋兰县| 永仁县| 同江市| 武宁县| 秦安县| 昌吉市| 峨眉山市| 万年县| 江都市| 永康市| 缙云县| 女性| 碌曲县| 沈阳市| 涿鹿县| 翼城县| 新乐市| 卫辉市| 基隆市| 瑞昌市| 同德县| 额尔古纳市| 石景山区| 陆丰市| 彰化市| 稷山县| 莒南县| 道孚县| 彭阳县| 鹿泉市| 吉安市| 中西区| 柘城县| 玛曲县| 垫江县| 长武县|