文章目录

  • 前言
  • 效果图
  • 核心功能设计
  • UI排版布局
  • 关于图形界面的设计思想
  • 实现步骤(一):从搭建起一个界面开始
    • 如何得到.ico格式的图标?
  • 实现步骤(二):在界面中添加功能部件
  • 实现步骤(三):搭建接收数据的函数
  • 实现步骤(四):搭建功能函数
  • 界面美化
  • 完整代码
  • 使用虚拟环境进行打包,发布属于你的EXE程序
  • 尾言

前言

初学Python的时候学到过这个项目,感觉很神奇!通过调用MyQR库实现彩色二维码的合成。在这里我不介绍这个库了,感兴趣的可以自己去搜索,有很多相关的详细教程。

最初很想把它分享给好朋友,无奈不会编写图形界面,一直就存在了自己的博客草稿箱里,今天终于可以把它编写出来分享给大家了,超级开心!

下面的代码讲解部分都是一块一块的比较零碎,最后有完整的代码。包括文末的虚拟环境打包发布EXE程序教程编辑在石墨文档,讲的已经很详细了,不懂得可以私聊我。

效果图

核心功能设计

支持.png、.jpg、.gif、.bmp格式的转换,素材图片自己挑选。

UI排版布局

程序需要的变量不多,共三个输入项:“二维码解析链接”、“素材名”、“成品名”,由于解析链接的输入框较长,所以居中布局,剩下的“素材名”、“成品名”的输入框较短,所以左右对称布局,这样就整体呈现出“对称、标齐”的效果。

素材分为.png、.jpg、.gif、.bmp格式,采用Checkbutton勾选项部件,根据自己的素材类型进行勾选即可!这样生成的图片也与素材格式类型保持一致。

在这个基础上设计的比较简单,除了颜色的美化,并没有插入一些图片进行修饰,大家可以在这个基础上进行二次开发。

关于图形界面的设计思想

图形界面我采用的是Python自带的tkinter库,我认为图形界面的学习并不是难的,当你熟练之后,你就会发现,他就是一个“窗口+部件+函数”的一个流程,窗口为我们进一步的设计提供好“容器”,部件为我们所实现的功能打下“基础”,而函数则是我们通过按钮的触发所实现的“功能”。

实现步骤(一):从搭建起一个界面开始

界面就相当于一个画板,有了画板我们才能在上面作画。除此之外,我们还需要准备一些颜料,这样才能让画作丰富多彩,而界面也有很多的装饰,比如界面的标题、图标、尺寸这些。

from tkinter import *
import tkinter as tkTOP6 = Tk()#初始化一个窗口
TOP6.geometry("575x375")#为这个窗口设置尺寸大小
TOP6.iconbitmap('图标.ico')#指定窗口图标
TOP6.title('彩色动态二维码生成器V1.0')#给窗口取一个名字
TOP6.mainloop()#窗口循环

如何得到.ico格式的图标?

在用Python给喜欢的女孩写一个办公小工具,她说棒极了!这篇博文中,我们曾讲解过。

首先在选取自己心仪的图片,然后在图标在线转换网站进行转换即可。

只要图片不是太大都是免费的。

实现步骤(二):在界面中添加功能部件

根据UI设计我们需要四种部件:标签(说明数据类型)、输入框(接受数据)、Checkbutton勾选项部件(选择素材格式类型)、按钮(触发功能功能函数)。

#二维码解析链接
label = StringVar()
input_name = Label(TOP6, text='二维码解析链接', font=('楷体', 20)).place(x=175, y=20)
entry20 = Entry(TOP6, bg='#ffffff', width=30, textvariable=label, font=('楷体', 20)).place(x=75, y=80)#素材类型选项
var1 = StringVar()
var1.set("F")
c = tk.Checkbutton(TOP6, text=".jpg", variable=var1, onvalue="T", offvalue="F")
c.grid(row=30, column=0, sticky=W)
c.place(x=100, y=125)var2 = StringVar()
var2.set("F")
c = tk.Checkbutton(TOP6, text=".png", variable=var2, onvalue="T", offvalue="F")
c.grid(row=30, column=0, sticky=W)
c.place(x=200, y=125)var3 = StringVar()
var3.set("F")
c = tk.Checkbutton(TOP6, text=".gif", variable=var3, onvalue="T", offvalue="F")
c.grid(row=30, column=0, sticky=W)
c.place(x=300, y=125)var4 = StringVar()
var4.set("F")
c = tk.Checkbutton(TOP6, text=".bmp", variable=var4, onvalue="T", offvalue="F")
c.grid(row=30, column=0, sticky=W)
c.place(x=400, y=125)#素材名
label2 = StringVar()
input_name = Label(TOP6, text='素材名', font=('楷体', 20)).place(x=35, y=180)
entry20 = Entry(TOP6, bg='#ffffff', width=8, textvariable=label2, font=('楷体', 20)).place(x=25, y=230)#成品名
label3 = StringVar()
input_name = Label(TOP6, text='成品名', font=('楷体', 20)).place(x=450, y=180)
entry20 = Entry(TOP6, bg='#ffffff', width=8, textvariable=label3, font=('楷体', 20)).place(x=440, y=230)#按钮
BUTTON = Button(TOP6, text="(๑¯ิε ¯ิ๑)",width = 15, height = 2,font=("楷体", 15))BUTTON.place(x=205, y=320)

实现步骤(三):搭建接收数据的函数

光有输入框还不行,输入框的意义是接收需要的数据,所以我们需要构建接收数据的函数。

#接收微信二维码链接的值
def get_QR():QR = label.get()return QR
#接收素材名字
def get_name():name = label2.get()return name
#接收成品名
def get_end_name():end_name = label3.get()return end_name
#.jpg
def get_v1():v1 = var1.get()return v1
#.png
def get_v2():v2 = var2.get()return v2
#.gif
def get_v3():v3 = var3.get()return v3
#.bmp
def get_v4():v4 = var4.get()return v4

实现步骤(四):搭建功能函数

接收好数据之后我们搭建功能函数,并通过command命令绑定按钮。

下面代码部分,我们将接收的数据放入函数中进行调用。

由于素材有不同的格式,而生成的成品要和素材的格式保持一致,所以我们通过勾选的不同分成四种情况,利用简单的条件判断语句即可实现。

在此函数中设计的还是有一个缺陷,没有生成成功的提示语!大家可以自己动手加上!!!!

BUTTON = Button(TOP6, text="(๑¯ิε ¯ิ๑)",width = 15, height = 2,command = QR_Code,font=("楷体", 15))BUTTON.place(x=205, y=320)
#图像生成函数部分def newmethod718():return myqrdef QR_Code():QR = get_QR()name = get_name()end_name = get_end_name()v1 = get_v1()v2 = get_v2()v3 = get_v3()v4 = get_v4()if v1 == 'T' and v2 == 'F' and v3 == 'F' and v4 == 'F':newmethod718().run(words=QR,# 扫描二维码后,显示的内容,或是跳转的链接version=5,  # 设置容错率level='H',  # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高picture=name+'.jpg',  # 图片所在目录,可以是动图colorized=True,  # 黑白(False)还是彩色(True)contrast=1.0,  # 用以调节图片的对比度,1.0 表示原始图片。默认为1.0。brightness=1.0,  # 用来调节图片的亮度,用法同上。save_name=end_name+'.jpg', )elif v2 == 'T' and v1 == 'F' and v3 == 'F' and v4 == 'F':newmethod718().run(words=QR,# 扫描二维码后,显示的内容,或是跳转的链接version=5,  # 设置容错率level='H',  # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高picture=name+'.png',  # 图片所在目录,可以是动图colorized=True,  # 黑白(False)还是彩色(True)contrast=1.0,  # 用以调节图片的对比度,1.0 表示原始图片。默认为1.0。brightness=1.0,  # 用来调节图片的亮度,用法同上。save_name=end_name+'.png', )elif v3 == 'T' and v1 == 'F' and v2 == 'F' and v4 == 'F':newmethod718().run(words=QR,# 扫描二维码后,显示的内容,或是跳转的链接version=5,  # 设置容错率level='H',  # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高picture=name+'.gif',  # 图片所在目录,可以是动图colorized=True,  # 黑白(False)还是彩色(True)contrast=1.0,  # 用以调节图片的对比度,1.0 表示原始图片。默认为1.0。brightness=1.0,  # 用来调节图片的亮度,用法同上。save_name=end_name+'.gif', )elif v4 == 'T' and v1 == 'F' and v3 == 'F' and v2 == 'F':newmethod718().run(words=QR,# 扫描二维码后,显示的内容,或是跳转的链接version=5,  # 设置容错率level='H',  # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高picture=name+'.bmp',  # 图片所在目录,可以是动图colorized=True,  # 黑白(False)还是彩色(True)contrast=1.0,  # 用以调节图片的对比度,1.0 表示原始图片。默认为1.0。brightness=1.0,  # 用来调节图片的亮度,用法同上。save_name=end_name+'.bmp', )

界面美化

在Python图形界面不够美?三行代码全面美化你的Tkinter界面中,我们已经介绍如何通过三行代码一键美化自己的tkinter界面。

首先引用ttkbootstrap

from ttkbootstrap import Style

然后将TOP6=tk()改为以下代码即可。

style = Style()
style = Style(theme='minty')
TOP6 = style.master

完整代码

from tkinter import *
import tkinter as tk
from ttkbootstrap import Style
from MyQR import myqrstyle = Style()
style = Style(theme='minty')
TOP6 = style.master
#TOP6 = Tk()#初始化一个窗口
TOP6.geometry("575x375")
TOP6.iconbitmap('图标.ico')#指定图标
TOP6.title('彩色动态二维码生成器V1.0')#指定图标#接收微信二维码链接的值
def get_QR():QR = label.get()return QR
#接收素材名字
def get_name():name = label2.get()return name
#接收成品名
def get_end_name():end_name = label3.get()return end_name
#.jpg
def get_v1():v1 = var1.get()return v1
#.png
def get_v2():v2 = var2.get()return v2
#.gif
def get_v3():v3 = var3.get()return v3
#.bmp
def get_v4():v4 = var4.get()return v4#图像生成函数部分def newmethod718():return myqrdef QR_Code():QR = get_QR()name = get_name()end_name = get_end_name()v1 = get_v1()v2 = get_v2()v3 = get_v3()v4 = get_v4()if v1 == 'T' and v2 == 'F' and v3 == 'F' and v4 == 'F':newmethod718().run(words=QR,# 扫描二维码后,显示的内容,或是跳转的链接version=5,  # 设置容错率level='H',  # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高picture=name+'.jpg',  # 图片所在目录,可以是动图colorized=True,  # 黑白(False)还是彩色(True)contrast=1.0,  # 用以调节图片的对比度,1.0 表示原始图片。默认为1.0。brightness=1.0,  # 用来调节图片的亮度,用法同上。save_name=end_name+'.jpg', )if v2 == 'T' and v1 == 'F' and v3 == 'F' and v4 == 'F':newmethod718().run(words=QR,# 扫描二维码后,显示的内容,或是跳转的链接version=5,  # 设置容错率level='H',  # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高picture=name+'.png',  # 图片所在目录,可以是动图colorized=True,  # 黑白(False)还是彩色(True)contrast=1.0,  # 用以调节图片的对比度,1.0 表示原始图片。默认为1.0。brightness=1.0,  # 用来调节图片的亮度,用法同上。save_name=end_name+'.png', )if v3 == 'T' and v1 == 'F' and v2 == 'F' and v4 == 'F':newmethod718().run(words=QR,# 扫描二维码后,显示的内容,或是跳转的链接version=5,  # 设置容错率level='H',  # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高picture=name+'.gif',  # 图片所在目录,可以是动图colorized=True,  # 黑白(False)还是彩色(True)contrast=1.0,  # 用以调节图片的对比度,1.0 表示原始图片。默认为1.0。brightness=1.0,  # 用来调节图片的亮度,用法同上。save_name=end_name+'.gif', )if v4 == 'T' and v1 == 'F' and v3 == 'F' and v2 == 'F':newmethod718().run(words=QR,# 扫描二维码后,显示的内容,或是跳转的链接version=5,  # 设置容错率level='H',  # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高picture=name+'.bmp',  # 图片所在目录,可以是动图colorized=True,  # 黑白(False)还是彩色(True)contrast=1.0,  # 用以调节图片的对比度,1.0 表示原始图片。默认为1.0。brightness=1.0,  # 用来调节图片的亮度,用法同上。save_name=end_name+'.bmp', )#二维码解析链接
label = StringVar()
input_name = Label(TOP6, text='二维码解析链接', font=('楷体', 20)).place(x=175, y=20)
entry20 = Entry(TOP6, bg='#ffffff', width=30, textvariable=label, font=('楷体', 20)).place(x=75, y=80)#素材类型选项
var1 = StringVar()
var1.set("F")
c = tk.Checkbutton(TOP6, text=".jpg", variable=var1, onvalue="T", offvalue="F")
c.grid(row=30, column=0, sticky=W)
c.place(x=100, y=125)var2 = StringVar()
var2.set("F")
c = tk.Checkbutton(TOP6, text=".png", variable=var2, onvalue="T", offvalue="F")
c.grid(row=30, column=0, sticky=W)
c.place(x=200, y=125)var3 = StringVar()
var3.set("F")
c = tk.Checkbutton(TOP6, text=".gif", variable=var3, onvalue="T", offvalue="F")
c.grid(row=30, column=0, sticky=W)
c.place(x=300, y=125)var4 = StringVar()
var4.set("F")
c = tk.Checkbutton(TOP6, text=".bmp", variable=var4, onvalue="T", offvalue="F")
c.grid(row=30, column=0, sticky=W)
c.place(x=400, y=125)#素材名
label2 = StringVar()
input_name = Label(TOP6, text='素材名', font=('楷体', 20)).place(x=35, y=180)
entry20 = Entry(TOP6, bg='#ffffff', width=8, textvariable=label2, font=('楷体', 20)).place(x=25, y=230)#成品名
label3 = StringVar()
input_name = Label(TOP6, text='成品名', font=('楷体', 20)).place(x=450, y=180)
entry20 = Entry(TOP6, bg='#ffffff', width=8, textvariable=label3, font=('楷体', 20)).place(x=440, y=230)BUTTON = Button(TOP6, text="(๑¯ิε ¯ิ๑)",width = 15, height = 2,command = QR_Code,font=("楷体", 15))BUTTON.place(x=205, y=320)TOP6.mainloop()

使用虚拟环境进行打包,发布属于你的EXE程序

EXE发布

尾言

学会之后的小伙伴可以分享给自己的女朋友…,也可以自娱自乐。这个项目是我初学Python的时候学习的,已经很久了,那个时候还挺火的。喜欢的朋友麻烦给个“一键三连”+“关注”。

一起进步!

Python一小时开发彩色动态二维码生成器,并使用虚拟化境进行打包发布EXE程序。相关推荐

  1. 带你制作一个拥有图形用户界面的彩色动态二维码生成器

    文章目录 开头说两局 制作步骤 完整代码 你好,我是goldsun. 你有想法和我一起进步吗? 开头说两局 不知不觉,自己来到CSDN竟然已经写了20来篇文章了,甚至其中还有超过上万字的,从小语文就异 ...

  2. python小工具myqr生成动态二维码

    python小工具myqr生成动态二维码 (一)安装 (二)使用 (一)安装 命令: pip install myqr 安装完成后,就可以在命令行中输入 myqr 查看下使用帮助: myqr --he ...

  3. Python如何制作个性化的动态二维码

    生活中处处存在二维码,简易的二维码生成可以通过导入qrcode或是myqr进行操作/ 例如制作简易的链接导向官网的普通二维码,以GitHub为例,先用qrcode试试 import qrcode qr ...

  4. STM32开发板动态二维码显示

    业务场景需要扫码互动,咨询了小熊派官方,并没有提供案例,之前出厂时屏幕可以显示的二维码只是一个固定图片,显然不适合.到网上找了一些资料,解说的不算完整,不能直接应用.根据这些前人的提醒,自己迁移一份. ...

  5. Python,2行代码生成动态二维码,赶紧收藏!!

    大家好,我是辰哥~ 今天给大家分享两个制作二维码的Python库,可以生成普通的二维码.图片背景版二维码.动图GIF版二维. 第一个库:MyQR 安装 pip install MyQR 普通的二维码制 ...

  6. python pyside2 基于qrcode的库二维码生成器

    自学了两天python的pyside2界面制作,因为和matlab app designer很相似所以入手比较快,二维码生成器是基本上手后制作的 第一个pyside2小项目,也参考了很多人的文章 原本 ...

  7. 动态二维码生成器PHP Dynamic QRcode

    什么是 PHP Dynamic QRcode ? PHP Dynamic QRcode 是一个允许生成和保存动态和静态二维码(QR码)的应用.它具有简洁.响应灵敏且用户友好的设计.其中包含您网站中可能 ...

  8. 使用Python制作跳舞小熊的动态二维

    首先,我们需要在终端安装Python的第三方库pip install myqr,否则直接运行会报错 ModuleNotFoundError: No module named 'MyQR' 然后前期工作 ...

  9. Python如何生成彩色二维码和动态二维码

    Python如何生成彩色二维码和动态二维码 第一步,导入二维码图片,为黑白图片: 查看图片 第二步,生成彩色的二维码: 查看彩色背景 将图片插入二维码中,生成彩色二维码: 查看生成的二维码. 第三步, ...

  10. Python生成动态二维码,运用神库:qrcode

    一.介绍 1.1 二维码 二维码又称二维条码,常见的二维码为 QR Code,QR 全称 Quick Response.是一个近几年来移动设备上超流行的一种编码方式,在现在的生活中二维码随处可见.我们 ...

最新文章

  1. 2.监控软件zabbix-客户端安装
  2. P3501-[POI2010]ANT-Antisymmetry【hash,二分答案】
  3. Android动态布局
  4. ajax 异步插入图片到数据库(多图上传)
  5. 棋牌游戏服务器设计(1)
  6. linux 什么数据类型 8字节,linuxea:go数值类型(8)
  7. java基础----集合操作---实例----List集合的初始化
  8. 路由器不开机——维修更换MT7621AT CPU
  9. DirectShow播放视频流程
  10. 【Netty - 解码器】did not read anything but decoded a message 异常
  11. 各行业获客有哪些捷径?有没有能快速找到精准客户的软件?
  12. java接口防刷_API 接口防刷
  13. 新浪采集内容数据自动发布
  14. 使用opentelemetry-go操作Jaeger
  15. java 强制类型转换
  16. UC伯克利马毅教授于2021年2月23日发的微博
  17. RGB图像中特定颜色的提取
  18. 【从0到1搭建LoRa物联网】3、国产LoRa终端ASR6505软硬件
  19. 5 种sem追踪区分客户电话来源的方式
  20. 镜像和分光采集的网卡接入方法

热门文章

  1. MATLAB中findpeaks函数使用
  2. matlab调制变声,MATLAB变声程序代码
  3. 精致简约的高速下载神器 - Motrix~~高速下载百度网盘资源!
  4. 台式电脑组装机相关知识之主板篇
  5. 用旧手机搭建服务器并实现内网穿透不需要root(本人亲测很多次最简单的一个)
  6. PHP程序提示验证码错误的问题(输入了正确的验证码)
  7. 蓝桥杯-ds18b20使用(小白专享)
  8. 浪潮存储服务器VAAI
  9. linux 字幕制作工具,Arctime可视化字幕编辑器–做字幕从未如此简单
  10. 被罚6500万,“偷税人”雪梨还能直播吗?