返回顶部
首页 > 资讯 > 后端开发 > Python >利用PyQt5生成过年春联
  • 399
分享到

利用PyQt5生成过年春联

2024-04-02 19:04:59 399人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

需求说明: 通过在界面上输入春联的上、下批和横批汉字从而生成春联图像,最后将春联图片保存。有实际需要的还可以将春联打印。 实现过程: 实现思路是先下载好春联的背景图片,再下载每个

需求说明:

通过在界面上输入春联的上、下批和横批汉字从而生成春联图像,最后将春联图片保存。有实际需要的还可以将春联打印。

实现过程:

实现思路是先下载好春联的背景图片,再下载每个汉字的文字图片将文字图片粘贴到春联背景上。所以这里有用了一个春联图片的三方获取地址。

Http://xufive.sdysit.com/tk

春联生成部分参考了 CSDN 博客平台。

网络数据获取相关模块

import io  # python IO 处理模块
from PIL import Image  # 图像处理模块
import requests  # 网络请求模块

UI 相关模块

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

主题样式模块引用

from QCandyUi import CandyWindow

应用操作相关模块

import sys
import os

UI界面主要代码展示

 def init_ui(self):
        self.setWindowTitle('春联生成器')
        self.setWindowIcon(QIcon('春联.ico'))

        vbox_main = QVBoxLayout()

        self.image_label = QLabel()
        self.image_label.setScaledContents(True)
        self.image_label.setMaximumSize(650,150)
        self.image_label.setPixmap(QPixmap('横批演示.jpg'))

        hbox = QHBoxLayout()
        self.brower = QTextBrowser()
        self.brower.setFont(QFont('宋体', 8))
        self.brower.setReadOnly(True)
        self.brower.setPlaceholderText('信息展示区域')
        self.brower.ensureCursorVisible()

        fORM = QFormLayout()

        self.up_label = QLabel()
        self.up_label.setText('设置上联')

        self.up_text = QLineEdit()
        self.up_text.setPlaceholderText('请输入上联')

        self.down_label = QLabel()
        self.down_label.setText('设置下联')

        self.down_text = QLineEdit()
        self.down_text.setPlaceholderText('请输入下联')

        self.h_label = QLabel()
        self.h_label.setText('设置横批')

        self.h_text = QLineEdit()
        self.h_text.setPlaceholderText('请输入横批')

        self.thread_ = WorkThread(self)
        self.thread_.trigger.connect(self.update_log)
        self.thread_.finished.connect(self.finished)

        self.save_path = QLineEdit()
        self.save_path.setReadOnly(True)

        self.save_btn = QPushButton()
        self.save_btn.setText('存储路径')
        self.save_btn.clicked.connect(self.save_btn_click)

        form.addRow(self.up_label, self.up_text)
        form.addRow(self.down_label, self.down_text)
        form.addRow(self.h_label, self.h_text)
        form.addRow(self.save_path, self.save_btn)

        vbox = QVBoxLayout()

        self.start_btn = QPushButton()
        self.start_btn.setText('开始生成春联')
        self.start_btn.clicked.connect(self.start_btn_click)

        vbox.addLayout(form)
        vbox.addWidget(self.start_btn)

        hbox.addWidget(self.brower)
        hbox.addLayout(vbox)

        vbox_main.addWidget(self.image_label)
        vbox_main.addLayout(hbox)

        self.setLayout(vbox_main)

槽函数的应用

 def update_log(self, text):
        '''
        槽函数:向文本浏览器中写入内容
        :param text:
        :return:
        '''
        cursor = self.brower.textCursor()
        cursor.movePosition(QTextCursor.End)
        self.brower.append(text)
        self.brower.setTextCursor(cursor)
        self.brower.ensureCursorVisible()

    def save_btn_click(self):
        dicr = QFileDialog.getExistingDirectory(self, '选择文件夹', os.getcwd())
        self.save_path.setText(dicr)

    def start_btn_click(self):
        self.start_btn.setEnabled(False)
        self.thread_.start()

    def finished(self, finished):
        if finished is True:
            self.start_btn.setEnabled(True)
            h_image = self.save_path.text().strip() + '/横批.jpg'
            if os.path.isfile(h_image):
                self.image_label.setPixmap(QPixmap(h_image))
            self.update_log('由于上下联不好预览,请使用图片查看器预览,目前仅支持横批图片预览...')

春联文字获取主题代码

  def run(self):
        up_text = self.parent.up_text.text().strip()
        down_text = self.parent.down_text.text().strip()
        h_text = self.parent.h_text.text().strip()
        save_path = self.parent.save_path.text().strip()
        if up_text == '' or down_text == '' or h_text == '' or save_path == '':
            self.trigger.emit('参数设置不允许为空,请设置好后重新开始!')
            self.finished.emit(True)
        else:
            text = up_text + ' ' + down_text
            self.generate_image(text, layout='V', pre=0.75, out_file=save_path + '/上下联.jpg')
            self.generate_image(h_text, layout='H', pre=0.75, out_file=save_path + '/横批.jpg')
            self.finished.emit(True)

文字图片获取部分

def get_Word_image(self, ch='bg', pre=1.0):
        '''
        单文字图片下载函数
        :param ch: 默认网络请求参数'bg'
        :param pre: 单个文字对象
        :return: 图像对象
        '''
        res = io.BytesIO(requests.post(url='http://xufive.sdysit.com/tk', data={'ch': ch}).content)
        image = Image.open(res)
        w, h = image.size
        w, h = int(w * float(pre)), int(h * float(pre))
        return image.resize((w, h))  # 单个文字的形状是正方形,所以这里的长、宽都是一致的

效果图

到此这篇关于利用PyQt5生成过年春联的文章就介绍到这了,更多相关PyQt5春联内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 利用PyQt5生成过年春联

本文链接: https://lsjlt.com/news/163187.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 利用PyQt5生成过年春联
    需求说明: 通过在界面上输入春联的上、下批和横批汉字从而生成春联图像,最后将春联图片保存。有实际需要的还可以将春联打印。 实现过程: 实现思路是先下载好春联的背景图片,再下载每个...
    99+
    2024-04-02
  • 如何利用PyQt5生成过年春联
    这篇文章将为大家详细讲解有关如何利用PyQt5生成过年春联,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。需求说明:通过在界面上输入春联的上、下批和横批汉字从而生成春联图像,最后将春联图片保存。有实际需要的...
    99+
    2023-06-28
  • 利用Python代码制作过年春联
    目录一、春联一1.效果展示2.代码展示二、春联二1.环境准备2.效果展示3.代码一、春联一 1.效果展示 2.代码展示 index.html <!DOCTYPE html&g...
    99+
    2024-04-02
  • 如何利用Python代码制作过年春联
    这篇文章将为大家详细讲解有关如何利用Python代码制作过年春联,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、春联一1.效果展示2.代码展示index.html<!DOCTYPE ht...
    99+
    2023-06-26
  • 如何用python编写一个生成春联软件
    目录前言效果展示代码打包exe可执行文件总结前言 最近不是快过年了,Python写对联挺火的,但是代码又不是人人都用,那就直接写个界面打包一下呗~ 主要实现只要运行后输入上联下联、横...
    99+
    2024-04-02
  • QT如何设计一个春联自动生成器
    小编给大家分享一下QT如何设计一个春联自动生成器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 前言春节是中国最隆重的传统节日,一到过年家家户户肯定是要贴春联...
    99+
    2023-06-29
  • 基于QT设计一个春联自动生成器
    目录1. 前言2. 实现原理3. 示例代码3.1 获取春联接口3.2 数据解析代码3.3 token数据存储1. 前言 春节是中国最隆重的传统节日,一到过年家家户户肯定是要贴春联;在...
    99+
    2024-04-02
  • PyQt5中怎么通过Matplotlib生成图像
    PyQt5中怎么通过Matplotlib生成图像,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是MatplotlibMatplotlib是一个Python 2D绘图库,...
    99+
    2023-06-16
  • 怎么开发一个虎年春节头像生成小程序
    怎么开发一个虎年春节头像生成小程序,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。马上就到春节了,今天看到有网友分享了网页版的虎年头像制作工具,感觉很不错,正好打算做个小程序...
    99+
    2023-06-29
  • python 生成18年写过的博客词云
    文章链接:https://mp.weixin.qq.com/s/NmJjTEADV6zKdT--2DXq9Q 回看18年,最有成就的就是有了自己的 博客网站,坚持记录,写文章,累计写了36篇了,从一开始的难以下手,到现在成为一种习惯,...
    99+
    2023-01-30
    写过 博客 python
  • 利用JavaScript创建一个兔年春节倒数计时器
    目录如何在 JavaScript 中构建倒数计时器第1步:创建倒计时输入框第2步:倒数计时器的基本结构第 3 步:使用 CSS 设计 JavaScript 定时器第四步:简单倒数计时...
    99+
    2023-01-06
    JavaScript兔年春节倒数计时器 JavaScript倒数计时器 JavaScript 计时器
  • Android利用zxing生成二维码的过程记录
    目录二维码生成原理(即工作原理)效果图如下:前提:源码如下:总结二维码生成原理(即工作原理) 二维码官方叫版本Version。Version 1是21 x 21的矩阵,Versio...
    99+
    2024-04-02
  • Android利用zxing生成二维码的详细过程
    本篇内容介绍了“Android利用zxing生成二维码的详细过程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录二维码生成原理(即工作原理...
    99+
    2023-06-20
  • 利用Python 生成hash值
    一、介绍 如果在Python中需要对用户输入的密码或者其他内容进行加密,首选的方法是生成hash值。 在Python中可以利用二个模块来进行: - crypt - hashlib 二、crypt (一)crypt的主要方法和...
    99+
    2023-01-31
    Python hash
  • 怎么用Python+PyQT5实现手绘图片生成器
    本篇内容主要讲解“怎么用Python+PyQT5实现手绘图片生成器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python+PyQT5实现手绘图片生成器”吧!UI界面的整体部分代码块,U...
    99+
    2023-06-29
  • 用Python写个新年贺卡生成器
    目录前言开发工具环境搭建总结 前言 离过年还有十多天,在这里提前祝各位小伙伴新年快乐呀~ 先说句题外话:疫情还是比较严峻,各位小伙伴要是出门的话一定要做好防护措施呀,不出门的话最好。...
    99+
    2024-04-02
  • GoLand利用plantuml生成UML类图
    目录步骤1. 安装goplantuml2. 将goplantuml集成到GoLand3. 安装GoLand的PlantUML插件4. 安装和集成GraphvizGoLand内置的Di...
    99+
    2024-04-02
  • 怎么使用PyQt5制作一个数据图表生成器
    这篇文章主要介绍了怎么使用PyQt5制作一个数据图表生成器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我的需求:手动配置X轴、Y轴、图表标题等参数自动通过Pyecharts...
    99+
    2023-06-29
  • ReactElectron生成桌面应用过程
    目录一、创建react项目二、安装Electron三、配置文件四、打包Electron桌面应用一、创建react项目 首先使用creat-react-app脚手架来创建一个react...
    99+
    2022-12-08
    React Electron React Electron打包桌面应用
  • 利用exe4j生成java的exe文件
    使用集成开发工具IDEA生成jar文件 1. File—>Project Structure 2. Artifacts—>加号—>JAR—>From mod...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作