如何利用PyQt5生成过年春联
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关如何利用PyQt5生成过年春联,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。需求说明:通过在界面上输入春联的上、下批和横批汉字从而生成春
千家信息网最后更新 2026年10月31日如何利用PyQt5生成过年春联
这篇文章将为大家详细讲解有关如何利用PyQt5生成过年春联,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
需求说明:
通过在界面上输入春联的上、下批和横批汉字从而生成春联图像,最后将春联图片保存。有实际需要的还可以将春联打印。
实现过程:
实现思路是先下载好春联的背景图片,再下载每个汉字的文字图片将文字图片粘贴到春联背景上。所以这里有用了一个春联图片的三方获取地址。
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 sysimport 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生成过年春联"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
春联
图片
文字
模块
横批
生成
输入
函数
图像
篇文章
网络
上下
上联
下联
主题
代码
内容
单个
参数
对象
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网与科技
互联网科技图片
互联网科技工作委员会副主任毛军
今日互联网科技
深圳科技互联网
高科技与互联网
深圳互联网络科技有限公司
万易互联网科技有限公司
互联网科技视频
银优互联网科技有限公司
腾讯科技 互联网女皇
互联网科技咨询
隆华科技工业互联网
福州新华互联网科技学校 知乎
湖南一路畅行互联网科技
米聚互联网科技南京有限公司排面
启辰互联网科技
四川互联网展示科技馆设计
互联网科技机房
互联网科技快速发展优美句子
有格互联网科技
华服互联网科技怎么样
互联网与科技金融数据
互联网科技公司发展
奇酷互联网科技
奇酷互联网络科技公司
上海万想互联网科技
互联网5g黑科技有哪些
张召忠谈中国互联网科技
下一代互联网重大应用科技园