c/c++语言开发共享基于PyQT5制作一个二维码生成器

个性化二维码的exe桌面应用的获取方式我放在文章最后面了,注意查收。通过执行打包后的exe应用程序可以直接运行生成个性化二维码。开始之前先来看一下通过二维码生成器是如何生成个性化二维码的。其中使用的p

个性化二维码的exe桌面应用的获取方式我放在文章最后面了,注意查收。通过执行打包后的exe应用程序可以直接运行生成个性化二维码。

开始之前先来看一下通过二维码生成器是如何生成个性化二维码的。

基于PyQT5制作一个二维码生成器

基于PyQT5制作一个二维码生成器

其中使用的python包和之前的gui应用制作使用的模块是一样的。

  # -*- coding:utf-8 -*-  import os    import sys    from pyqt5.qtwidgets import *    from pyqt5.qtgui import *    from pyqt5.qtcore import *    import images  

这里的images模块是用于解决打包应用时外部图片的引用不能生效的问题。后面的一篇文章中将会说明如何将外部资源打包到exe的应用中去。

做gui的桌面应用,首先还是使用pyqt5进行界面的布局和界面组件的添加,虽然代码量看起来比较多,但逻辑不多。

  # -*- coding:utf-8 -*-      def init_ui(self):          grid = qgridlayout()            self.picture_name = ''          self.words_label = qlabel()          self.words_label.settext('链接设置:')          self.words_text = qlineedit()          self.words_text.setplaceholdertext('www.baidu.com')          self.words_text.setattribute(qt.wa_inputmethodenabled, false)            self.version_label = qlabel()          self.version_label.settext('边距设置(只允许微调):')          self.version_text = qspinbox()          self.version_text.setrange(1, 3)          self.version_text.setvalue(1)            self.picture_text = qlineedit()          self.picture_text.setplaceholdertext('个性化图片路径')          self.picture_text.setreadonly(true)          self.picture_button = qpushbutton()          self.picture_button.settext('个性化图片')          self.picture_button.clicked.connect(self.picture_button_click)            self.colorized_label = qlabel()          self.colorized_label.settext('是否显示为彩色:')          self.colorized_text = qcombobox()          colorized_items = ['是', '否']          self.colorized_text.additems(colorized_items)          self.colorized_text.setcurrentindex(1)            self.brightness_label = qlabel()          self.brightness_label.settext('调节图片亮度:')          self.brightness_text = qdoublespinbox()          self.brightness_text.setrange(1, 10)          self.brightness_text.setsinglestep(1.0)            self.save_dir_text = qlineedit()          self.save_dir_text.setplaceholdertext('存储目录')          self.save_dir_text.setreadonly(true)          self.save_dir_button = qpushbutton()          self.save_dir_button.settext('自定义路径')          self.save_dir_button.clicked.connect(self.save_dir_button_click)            self.generate_button = qpushbutton()          self.generate_button.settext('快速生成二维码')          self.generate_button.clicked.connect(self.generate_button_click)            self.version_current = qlabel()          self.version_current.settext('默认二维码为作者公众号,版本声明:本应用由公众号 [python 集中营] 发布!')          self.version_current.setalignment(qt.aligncenter)          self.version_current.setstylesheet('color:red')            self.image = qlabel()          self.image.setscaledcontents(true)          self.image.setmaximumsize(200, 200)          self.image.setpixmap(qpixmap(':/default.png'))            grid.addwidget(self.words_label, 0, 0, 1, 1)          grid.addwidget(self.words_text, 0, 1, 1, 2)          grid.addwidget(self.version_label, 1, 0, 1, 2)          grid.addwidget(self.version_text, 1, 2, 1, 1)          grid.addwidget(self.picture_text, 2, 0, 1, 2)          grid.addwidget(self.picture_button, 2, 2, 1, 1)          grid.addwidget(self.colorized_label, 3, 0, 1, 2)          grid.addwidget(self.colorized_text, 3, 2, 1, 1)          grid.addwidget(self.brightness_label, 4, 0, 1, 2)          grid.addwidget(self.brightness_text, 4, 2, 1, 1)          grid.addwidget(self.save_dir_text, 5, 0, 1, 2)          grid.addwidget(self.save_dir_button, 5, 2, 1, 1)          grid.addwidget(self.generate_button, 6, 0, 1, 3)            hbox = qhboxlayout()          hbox.addwidget(self.image)          hbox.addspacing(30)          hbox.addlayout(grid)            vbox = qvboxlayout()          vbox.addlayout(hbox)          vbox.addspacing(10)          vbox.addwidget(self.version_current)            self.setlayout(vbox)  

用到的槽函数有三个,一个是为了做选择背景图片、第二个是为了做选择要存储生成后的文件存放路径可以自由选择存放到什么地方、第三个是为了做调起生成二维码的函数。

第一个来看一下如何通过关联槽函数来实现读取需要作为个性化二维码的背景图片。

      def picture_button_click(self):          import os          self.cwd = os.getcwd()          txt_file_path = qfiledialog.getopenfilename(self, "选取文件", self.cwd, "jpg file (*.jpg);; png file (*.png)")          self.picture_text.settext(txt_file_path[0])          if self.picture_text.text().strip() != "":              self.picture_name = txt_file_path[0].split('/')[-1].split('.')[0]              print(self.picture_name)          else:              self.picture_name = ''  

第二个就是选择存储文件路径的槽函数。

      def save_dir_button_click(self):          import os          self.cwd = os.getcwd()          directory = qfiledialog.getexistingdirectory(self, '选取文件夹', self.cwd)          print(directory)          self.save_dir_text.settext(directory)  

是通过dialog对话框的形式获取到自定义选择的存储文件路径。

第三个槽函数就是为了生成个性化二维码,其实二维码的生成部分只有一句代码。那就是myqr模块提供的run函数,通过这个函数就能实现个性化二维码的生成。

首先,需要导入myqr这个库。

  from myqr import myqr

为了可以看清楚后面二维码生成函数(run函数),先来看一下这个库提供的run函数都有什么参数。

  '''      myqr.run()  参数解释      words        需要跳转的链接或者文字      version        自然数,数字越大边长越大      level        纠错等级      picture        结合图片      colorized    是否显示彩色      contrast    对比度,默认为1.0      brightness    亮度  float,调节图片的亮度      save_name    输出文件名,默认文件名"qrcode.png"      save_dir    存储位置,默认存储当前目录  '''  

下面看一下这个具体生成个性化二维码的槽函数。除了二维码的生成部分和需要将生成后的二维码放到应用的页面上展示之外,其他主要就是一些参数的校验方法。

    def generate_button_click(self):          from myqr import myqr          colorized_index = self.colorized_text.currentindex()          print(colorized_index)          colorized = none          if colorized_index == 0:              colorized = true          else:              colorized = false          print(colorized)          words_text = self.words_text.text()          words = none          if words_text.strip() != "":              words = words_text.strip()          else:              words = 'default message: python is very beautiful'          print(words)          version_text = self.version_text.value()          print(version_text)          picture_text = self.picture_text.text()          picture = none          if picture_text.strip() != "":              picture = picture_text          print(picture)          brightness_text = self.brightness_text.value()          print(brightness_text)          save_dir_text = self.save_dir_text.text()          save_dir = none          if save_dir_text.strip() != "":              save_dir = save_dir_text.strip()          else:              save_dir = os.getcwd()          print(save_dir)          myqr.run(words=str(words), version=int(version_text), level='h', picture=picture,                   colorized=colorized, contrast=1.0, brightness=float(brightness_text), save_dir=save_dir)          if self.picture_name.strip() != '':              map_dir = save_dir + '/' + self.picture_name + '_qrcode.png'          else:              map_dir = save_dir + '/' + 'qrcode.png'          print(map_dir)          self.image.setpixmap(qpixmap(map_dir)) 

到此这篇关于基于pyqt5制作一个二维码生成器的文章就介绍到这了,更多相关pyqt5二维码生成器内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多c/c++开发分享基于PyQT5制作一个二维码生成器,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/1038476.html

(0)
上一篇 2022年1月26日
下一篇 2022年1月26日

精彩推荐