最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于PyQT5制作一個(gè)二維碼生成器

 更新時(shí)間:2021年12月29日 08:40:34   作者:Python 集中營(yíng)  
這篇文章主要介紹了利用PyQT5制作一個(gè)簡(jiǎn)單的二維碼生成器,并打包成exe可執(zhí)行程序。文中的示例代碼講解詳細(xì),感興趣的同學(xué)可以了解一下

個(gè)性化二維碼的exe桌面應(yīng)用的獲取方式我放在文章最后面了,注意查收。通過(guò)執(zhí)行打包后的exe應(yīng)用程序可以直接運(yùn)行生成個(gè)性化二維碼。

開(kāi)始之前先來(lái)看一下通過(guò)二維碼生成器是如何生成個(gè)性化二維碼的。

其中使用的python包和之前的GUI應(yīng)用制作使用的模塊是一樣的。

# -*- coding:utf-8 -*-
import os

import sys

from PyQt5.QtWidgets import *

from PyQt5.QtGui import *

from PyQt5.QtCore import *

import images

這里的images模塊是用于解決打包應(yīng)用時(shí)外部圖片的引用不能生效的問(wèn)題。后面的一篇文章中將會(huì)說(shuō)明如何將外部資源打包到exe的應(yīng)用中去。

做GUI的桌面應(yīng)用,首先還是使用pyqt5進(jìn)行界面的布局和界面組件的添加,雖然代碼量看起來(lái)比較多,但邏輯不多。

# -*- coding:utf-8 -*-
    def init_ui(self):
        grid = QGridLayout()

        self.picture_name = ''
        self.words_label = QLabel()
        self.words_label.setText('鏈接設(shè)置:')
        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('邊距設(shè)置(只允許微調(diào)):')
        self.version_text = QSpinBox()
        self.version_text.setRange(1, 3)
        self.version_text.setValue(1)

        self.picture_text = QLineEdit()
        self.picture_text.setPlaceholderText('個(gè)性化圖片路徑')
        self.picture_text.setReadOnly(True)
        self.picture_button = QPushButton()
        self.picture_button.setText('個(gè)性化圖片')
        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('調(diào)節(jié)圖片亮度:')
        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('存儲(chǔ)目錄')
        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('默認(rèn)二維碼為作者公眾號(hào),版本聲明:本應(yīng)用由公眾號(hào) [Python 集中營(yíng)] 發(fā)布!')
        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)

用到的槽函數(shù)有三個(gè),一個(gè)是為了做選擇背景圖片、第二個(gè)是為了做選擇要存儲(chǔ)生成后的文件存放路徑可以自由選擇存放到什么地方、第三個(gè)是為了做調(diào)起生成二維碼的函數(shù)。

第一個(gè)來(lái)看一下如何通過(guò)關(guān)聯(lián)槽函數(shù)來(lái)實(shí)現(xiàn)讀取需要作為個(gè)性化二維碼的背景圖片。

    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 = ''

第二個(gè)就是選擇存儲(chǔ)文件路徑的槽函數(shù)。

    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)

是通過(guò)dialog對(duì)話框的形式獲取到自定義選擇的存儲(chǔ)文件路徑。

第三個(gè)槽函數(shù)就是為了生成個(gè)性化二維碼,其實(shí)二維碼的生成部分只有一句代碼。那就是MYQR模塊提供的run函數(shù),通過(guò)這個(gè)函數(shù)就能實(shí)現(xiàn)個(gè)性化二維碼的生成。

首先,需要導(dǎo)入MYQR這個(gè)庫(kù)。

from MyQR import myqr

為了可以看清楚后面二維碼生成函數(shù)(run函數(shù)),先來(lái)看一下這個(gè)庫(kù)提供的run函數(shù)都有什么參數(shù)。

'''
    myqr.run()  參數(shù)解釋
    words        需要跳轉(zhuǎn)的鏈接或者文字
    version        自然數(shù),數(shù)字越大邊長(zhǎng)越大
    level        糾錯(cuò)等級(jí)
    picture        結(jié)合圖片
    colorized    是否顯示彩色
    contrast    對(duì)比度,默認(rèn)為1.0
    brightness    亮度  float,調(diào)節(jié)圖片的亮度
    save_name    輸出文件名,默認(rèn)文件名"qrcode.png"
    save_dir    存儲(chǔ)位置,默認(rèn)存儲(chǔ)當(dāng)前目錄
'''

下面看一下這個(gè)具體生成個(gè)性化二維碼的槽函數(shù)。除了二維碼的生成部分和需要將生成后的二維碼放到應(yīng)用的頁(yè)面上展示之外,其他主要就是一些參數(shù)的校驗(yàn)方法。

  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)) 

到此這篇關(guān)于基于PyQT5制作一個(gè)二維碼生成器的文章就介紹到這了,更多相關(guān)PyQT5二維碼生成器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)圖像全景拼接

    python實(shí)現(xiàn)圖像全景拼接

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖像全景拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Python中time庫(kù)的使用(日期時(shí)間)

    Python中time庫(kù)的使用(日期時(shí)間)

    time庫(kù)是python中處理時(shí)間的標(biāo)準(zhǔn)庫(kù),這篇文章主要介紹了Python中time庫(kù)的使用(日期時(shí)間),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • python文件讀取失敗怎么處理

    python文件讀取失敗怎么處理

    在本篇文章里小編給大家分享的是關(guān)于python文件讀取失敗怎么處理的相關(guān)文章,需要的朋友們參考下。
    2020-06-06
  • Python查找不限層級(jí)Json數(shù)據(jù)中某個(gè)key或者value的路徑方式

    Python查找不限層級(jí)Json數(shù)據(jù)中某個(gè)key或者value的路徑方式

    今天小編就為大家分享一篇Python查找不限層級(jí)Json數(shù)據(jù)中某個(gè)key或者value的路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python學(xué)習(xí)筆記之Python的下載、腳本與交互模式、注釋

    Python學(xué)習(xí)筆記之Python的下載、腳本與交互模式、注釋

    這篇文章主要介紹了Python學(xué)習(xí)筆記之Python的下載、腳本與交互模式、注釋,本文從基礎(chǔ)開(kāi)始學(xué)習(xí)Python,需要的朋友可以參考下
    2023-03-03
  • python實(shí)現(xiàn)批量nii文件轉(zhuǎn)換為png圖像

    python實(shí)現(xiàn)批量nii文件轉(zhuǎn)換為png圖像

    這篇文章主要介紹了python實(shí)現(xiàn)批量nii文件轉(zhuǎn)換為png圖像,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 簡(jiǎn)單的Python解密rsa案例

    簡(jiǎn)單的Python解密rsa案例

    這篇文章主要為大家介紹了簡(jiǎn)單的Python解密rsa案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 用Python制作mini翻譯器的實(shí)現(xiàn)示例

    用Python制作mini翻譯器的實(shí)現(xiàn)示例

    這篇文章主要介紹了用Python制作mini翻譯器的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python運(yùn)維自動(dòng)化之nginx配置文件對(duì)比操作示例

    Python運(yùn)維自動(dòng)化之nginx配置文件對(duì)比操作示例

    這篇文章主要介紹了Python運(yùn)維自動(dòng)化之nginx配置文件對(duì)比操作,涉及Python針對(duì)文件的讀取、遍歷、比較進(jìn)而達(dá)到差異對(duì)比的相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • 使用Matplotlib制作動(dòng)態(tài)圖的示例詳解

    使用Matplotlib制作動(dòng)態(tài)圖的示例詳解

    matplotlib是一個(gè)著名的python繪圖庫(kù),由于其靈活強(qiáng)大的繪圖功能使得在python中可視化變得非常容易,本文主要介紹了在matplotlib庫(kù)中制作動(dòng)態(tài)圖的方法,需要的可以參考一下
    2023-06-06

最新評(píng)論

宁南县| 铅山县| 边坝县| 衡东县| 兴业县| 临高县| 平顶山市| 石渠县| 仁寿县| 谢通门县| 恩平市| 玉龙| 舒城县| 蛟河市| 新晃| 古交市| 呼图壁县| 涞源县| 越西县| 沙洋县| 汪清县| 墨玉县| 双牌县| 绥棱县| 盐源县| 讷河市| 宁乡县| 大城县| 湘阴县| 临夏市| 灵宝市| 喀什市| 上杭县| 营山县| 东乡族自治县| 龙山县| 禄丰县| 昌黎县| 杭州市| 衡东县| 六枝特区|