首页 > 作文

利用PyQt5生成过年春联

更新时间:2023-04-04 16:57:11 阅读: 评论:0

需求说明:

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

实现过程:

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

/d/file/titlepic/prep春联生成部分参考了 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(lf):        lf.twindowtitle('春联生成器')        lf.twindowicon(qicon('春联.ico'))        vbox_main = qvboxlayout()        lf.image_label = qlabel()        lf.image_label.tscaledcontents(true)        lf.image_label.tmaximumsize(650,150)    西瓜酱    lf.image_label27是什么意思.tpixmap(qpixmap('横批演示.jpg'))        hbox = qhboxlayout()        lf.brower = qtextbrowr()        lf.brower.tfont(qfont('宋体', 8))        lf.brower.treadonly(true)        lf.brower.tplaceholdertext('信息展示区域')        lf.brower.ensurecursorvisible()        form = qformlayout()        lf.up_label = qlabel()        lf.up_label.ttext('设置上联')        lf.up_text = qlineedit()        lf.up_text.tplaceholdertext('请输入上联')        lf.down_label = qlabel()        lf.down_label.ttext('设置下联')        lf.down_text = qlineedit()        lf.down_text.tplaceholdertext('请输入下联')        lf.h_label = qlabel()        lf.h_label.ttext('设置横批')        lf.h_text = qlineedit()        lf.h_text.tplaceholdertext('请输入横批')        lf.thread_ = workthread(lf)        lf.thread_.trigger.connect(lf.update_log)        lf.thread_.finished.connect(lf.finished)        lf.save_path = qlineedit()        lf.save_path.treadonly(true)        lf.save_btn = qpushbutton()        lf.save_btn.ttext('存储路径')        lf.save_btn.clicked.connect(lf.save_btn_click)        form.addrow(lf.up_label, lf.up_text)        form.addrow(lf.down_label, lf.down_text)        form.addrow(lf.h_label, lf.h_text)        form.addrow(lf.save_path, lf.save_btn)        vbox = qvboxlayout()        lf.start_btn = qpushbutton()        lf.start_btn.ttext('开始生成春联')        lf.start_btn.clicked.connect(lf.start_btn_click)        vbox.addlayout(form)        vbox.addwidget(lf.start_btn)        hbox.addwidget(lf.brower)        hbox.addlayout(vbox)        vbox_main.addwidget(lf.image_label)        vbox_ma养殖肉牛in.addlayout(hbox)        lf.tlayout(vbox_main)

槽函数的应用

 def update_log(lf, text):        '''        槽函数:向文本浏览器中写入内容        :param text:        :return:        '''        cursor = lf.brower.textcursor()        cursor.moveposition(qtextcursor.end)        lf.brower.append(text)        lf.brower.ttextcursor(cursor)        lf.brower.ensurecursorvisible()    def save_btn_click(lf):        dicr = qfiledialog.getexistingdirectory(lf, '选择文件夹', os.ge情人节情书tcwd())        lf.save_path.ttext(dicr)    def start_btn_click(lf):        lf.start_btn.ten比格犬价格abled(fal)        lf.thread_.start()    def finished(lf, finished):        if finished is true:            lf.start_btn.tenabled(true)            h_image = lf.save_path.text().strip() + '/横批.jpg'            if os.path.isfile(h_image):                lf.image_label.tpixmap(qpixmap(h_image))            lf.update_log('由于上下联不好预览,请使用图片查看器预览,目前仅支持横批图片预览...')

春联文字获取主题代码

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

文字图片获取部分

def get_word_image(lf, ch='bg', pre=1.0):        '''        单文字图片下载函数        :param ch: 默认网络请求参数'bg'        :param pre: 单个文字对象        :return: 图像对象        '''        res = io.bytesio(requests.post(url='/d/file/titlepic/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春联内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 16:57:08,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/f671d0cc97f941a1b31693fd5cc9a644.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:利用PyQt5生成过年春联.doc

本文 PDF 下载地址:利用PyQt5生成过年春联.pdf

标签:春联   横批   模块   文字
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图