摘要:在高速發(fā)展的今天,手機對我們的重要性不言而喻,二維碼的誕生,大大的方便了信息的交互,如購物、乘車、吃飯等等。本軟件是采用Python設計的一款二維碼轉換器,功能是將名片上的信息轉化成二維碼,而生成的二維碼印刷在名片上,手機掃一下可以提取到名片上的信息,實現便捷的存儲。
關鍵詞:Python ?名片 ?二維碼 ?轉換器
Abstract :In today's rapid development, the importance of the mobile phone to us it is understood that the birth of the qr code, greatly facilitates the interaction of information, such as shopping, driving, eating, and so on. This software is designed using Python a qr code converter, achieve rapid business card information into the qr code, and the generated qr code printed on the card, phone to sweep can extract the information of business card, convenient storage.
key words :Python ?card ? qr code ? converters
在“一帶一路”國際合作高峰論壇舉行期間,20國青年投票選出中國的“新四大發(fā)明”:高鐵、掃碼支付、共享單車和網購;其中掃碼支付是指手機通過掃描二維碼跳轉到支付頁面,再進行付款,這就體現出了二維碼給生活帶來的便利;于是我就利用Python設計一款軟件,讓名片上的信息也可以二維碼掃描獲取,方便了名片信息的存儲,操作簡單方便,為公司或企業(yè)等單位制作帶有二維碼的名片提供便利。Python的版本3.6.0,使用的擴展庫有:tkinter、qrcode 、PIL、pyinstaller等,下面將簡單介紹制作過程:
一、窗體的制作
Python提供了多個圖形開發(fā)界面庫,常用的Python GUI有tkinter、wxPython和Jython等。此次制作我采用的是tkinter庫,因為它是Python 的標準 GUI 庫,直接內置在 python 的安裝包中,只要安裝好 Python 之后就能使用。
使用到的部件有l(wèi)abel(標簽,顯示一個文本或圖像)、button(按鈕,用來執(zhí)行一個命令或別的操作)和entry(文本框,單行文本輸入)。注意在tkinter中窗口部件是沒有分級的,所有的窗口部件類在樹種都是兄弟關系。tkinter控件采用特定的幾何狀態(tài)管理方法:pack(包裝)、grid(網格)和place(位置)來管理整個控件組織,我采用的是place()方法。以下是部分代碼:
import tkinter ?#導入tkinter庫
tk=tkinter.Tk()
tk.title('名片二維碼轉換器(甘潤生)')#給窗體標題命名
#制作標簽及位置放置
labelname=tkinter.Label(tk,text='姓名',justify=tkinter.RIGHT,width=80)
labelname.place(x=10,y=5,width=80,height=20)
#創(chuàng)建字符串變量和文本框組件,同時設置關聯變量
varname=tkinter.StringVar(tk,value='')
enname=tkinter.Entry(tk,width=80,textvariable=varname)
enname.place(x=100,y=5,width=200,height=20)
#制作按鈕:
buttonconversion=tkinter.Button(tk,text='轉換二維碼',command=conversion)
buttonconversion.place(x=50,y=110,width=80,height=20)
二、二維碼的轉換
二維碼(2-dimensional bar code),是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的;因此,在轉換的過程中,離不開編碼壓縮方式,常用的碼制有:Data Matrix, QR Code等等,現實中流行的是 QR code 碼制,所以,二維碼又被稱為 QR code;QR code 是一種矩陣式二維條碼(又稱棋盤式二維條碼),它是在一個矩形空間通過黑、白像素在矩陣中的不同分布進行編碼。
Python中的二維碼庫有很多:qrcode、myqr、Zxing等,我采用qrcode庫,可以通過 pip install XXX 來進行安裝。具體過程是將輸入的信息逐個的存到文件中,然后在全部提取出來,經過qrcode和image來生成二維碼圖片,部分程序如下:
#轉換成二維碼
q=qrcode.main.QRCode(version=3)
q.add_data(string)
m=q.make_image()
m.save(name+'.png') ?#以輸入的姓名為文件名來存儲二維碼圖片
三、文件的打包,生產EXE可執(zhí)行文件
雖然現在倡導開源,但是很多人還是喜歡操作簡單的程序,打包成exe文件不僅方便人們進行使用,還能讓哪些沒有安裝PY環(huán)境的電腦能夠運行軟件,同時也對代碼進行了加密,防止胡亂修改而不能運行。目前對python代碼打包成exe的方式有:py2exe、pyinstaller、cx_Freeze等,而我采用的是pyinstaller,因為pyinstaller具有除了win32平臺外還支持Linux和Unix平臺、智能支持python的第三方模塊如PyQt和外部數據文件等、支持EGG格式文件、可以選擇exe文件圖標(Windows only)等等特點。
通過 pip install pyinstaller來安裝該庫,安裝成功后采用 pyinstaller –F ?-w XXXXXX.py來打包成單個EXE文件。文件默認位置是C:\Users\Administrator\dist
四、運行與結果分析
點擊mingpian.exe運行,彈出窗口,輸入信息,點擊“轉換二維碼”按鈕,生成相應的二維碼圖片,再點擊“清空”按鈕,重新輸入信息,生成新的二維碼。打開二維碼,掃描一下,成功獲取了名片上的信息。注意:二維碼文件存放在在C:\Users\Administrator\dist文件中。
本次設計都實現了預期的結果,成功的將名片上的信息轉為二維碼,方便手機掃描,復制粘貼,操作方法簡單,大大的提高了信息的利用率;此次練習讓我加深了對tkinter、qrcode等相關知識的理解,同時也增加了對于python的學習興趣。該款軟件設計的比較簡單,還有許多空間可以改進,如設計窗體的背景,修飾生成exe文件的圖標,修改二維碼沒有LOGO等等。
參考文獻
1.張若愚,Python科學計算[M]. 清華大學出版社 ?, 2016
2.史夢楚,Python語言的探討[J]. ?中國新通信,2017(07)
3.Jason Briggs【美】(著),尹哲(譯),趣學Python編程,人民郵電出版社,2014
4.Kenneth ?A.Lambert【美】(著),李軍(譯),數據結構(Python語言描述),人民郵電出版社,2019