利用PyQt5制作简易二维码生成器

先来看看效果,主界面大概就是这个样子:在这里插入图片描述
生成成功界面:
在这里插入图片描述
生成失败界面:
在这里插入图片描述
细节我后面会详细说

首先

pip install pyqt5

然后在pycharm中配置pyqt5,详情请参考这里

三个界面的搭建都可以用pyuic直接生成.py文件,然后设置一个主文件mainwindow.py直接调用就可以(源码链接我会放在最后)。

然后说说二维码的生成:
看我上面的窗口截图,有三种二维码样式,其中样式1和样式二用到的是qrcode库,样式三用到的是myqr库。

# pip install qrcode
import qrcode
# pip install myqr
from MyQR import myqr

其中qrcode可以生成普通二维码以及中间带有图标的二维码,二维码内容支持中英文;myqr可以生成以某张.png图片或.gif动态图为背景的二维码,但是二维码内容不支持中文,只支持英文以及一系列字符。

另外为了方便与二维码的生成与界面进行交互,我设置了一个能跨多个文件(整个文件夹)的全局变量保存文件globalvar.py。

还有为了防止图片路径更改后导致程序找不到,我们需要设置一个.qrc文件来保存所需图片,然后利用下面这行命令将这些图片都转为.py文件在程序中引用。它的本质就是将图片转化为base64格式进行保存,需要用的时候在引入读取。这样即使原图路径改变或将其打包为.exe文件在别的电脑上运行都不会丢失图片。(我这里引入的图片是文章开头程序运行截图里的样式1、样式2、样式3以及程序窗口左上角的图标还有生成的.exe文件图标)

pyrcc5 picture.qrc -o picture_re.py

在这里插入图片描述
如图这就是我的.qrc文件和转化的.py文件。

由于样式三的图片用的myqr库不支持二维码内容为英文,所以我设置了一个翻译功能,检测到输入的内容为中文时将其自动转化成英文。这里采取的是爬取有道翻译的方式进行转化。

from urllib import request
from urllib import parse
import json

def tran(data):
    Request_URL="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
    form_data={}
    form_data['i']=data
    form_data['from'] = 'AUTO'
    form_data['to'] = 'AUTO'
    form_data['smartresult'] = 'dict'
    form_data['doctype']='json'
    form_data['version']='2.1'
    form_data['action']='FY_BY_CLICKBUTTION'
    form_data['typoResult']='false'

    data=parse.urlencode(form_data).encode('utf-8')
    response=request.urlopen(Request_URL,data)
    html=response.read().decode('utf-8')
    translate_results = json.loads(html)
    # 找到翻译结果
    translate_result = translate_results["translateResult"][0][0]['tgt']
    # 打印翻译结果
    # print(translate_result)
    return translate_result

最后界面用的pyqt5的东西,主窗口用的MainWindow,提示窗口用的Widget(本来也想用Dialog,但是Widget自带close方法,多香…)。

由于代码有点多,就不再这里一一贴出来了,源码我放在了这里:

https://github.com/sleepyyoung/QRCode

最后在放一段演示视频吧:

自制二维码生成器演示

发布了20 篇原创文章 · 获赞 10 · 访问量 1218

猜你喜欢

转载自blog.csdn.net/qq_43613793/article/details/104251411