需求说明:
通过在界面上输入春联的上、下批和横批汉字从而生成春联图像,最后将春联图片保存。有实际需要的还可以将春联打印。
实现过程:
实现思路是先下载好春联的背景图片,再下载每个汉字的文字图片将文字图片粘贴到春联背景上。所以这里有用了一个春联图片的三方获取地址。
/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 osui界面主要代码展示
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 条评论) |