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