2024年最全用python写一个自动生成春联的软件,打包exe,2024年最新阿里p8面试题和答案

简介: 2024年最全用python写一个自动生成春联的软件,打包exe,2024年最新阿里p8面试题和答案

唠叨一下

==============================================================

最近不是快过年了,Python写对联挺火的,但是代码又不是人人都用,那就直接写个界面打包一下呗~

主要实现只要运行后输入上联下联、横批,然后自动生成春联保存在代码文件夹,如果要打印出来也是可以的。

只要软件的兄弟,我放在最后了

效果展示

==============================================================

输入对联,选择路径后点击开始生成春联即可。

代码

============================================================

需要导入的模块

网络数据获取相关模块

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
获取文字主题
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)) # 单个文字的形状是正方形,所以这里的长、宽都是一致的
生成对联
def generate_image(self, words, layout=‘V’, pre=1.0, out_file=None):
‘’’
:param words: 春联文本
:param layout: 布局:水平/垂直
:param pre: 春联比例
:param out_file: 保存文件
:return:
‘’’
quality = ‘H’
if pre == 0.75:
quality = ‘M’
elif pre == 0.5:
quality = ‘L’
usize = {‘H’: (640, 23), ‘M’: (480, 18), ‘L’: (320, 12)}
bg_im = self.get_word_image(ch=‘bg’, pre=pre)
self.trigger.emit(‘春联背景下载完成!’)
text_list = [list(item) for item in words.split()]
rows = len(text_list)
cols = max([len(item) for item in text_list])
if layout == ‘V’:
ow, oh = 40 + rows * usize[quality][0] + (rows - 1) * 10, 40 + cols * usize[quality][0]
else:
ow, oh = 40 + cols * usize[quality][0], 40 + rows * usize[quality][0] + (rows - 1) * 10
out_im = Image.new(‘RGBA’, (ow, oh), ‘#f0f0f0’)
for row in range(rows):
if layout == ‘V’:
row_im = Image.new(‘RGBA’, (usize[quality][0], cols * usize[quality][0]), ‘white’)
offset = (ow - (usize[quality][0] + 10) * (row + 1) - 10, 20)
else:
row_im = Image.new(‘RGBA’, (cols * usize[quality][0], usize[quality][0]), ‘white’)
offset = (20, 20 + (usize[quality][0] + 10) * row)
for col, ch in enumerate(text_list[row]):
if layout == ‘V’:
pos = (0, col * usize[quality][0])
else:
pos = (col * usize[quality][0], 0)
ch_im = self.get_word_image(ch=ch, pre=pre)
row_im.paste(bg_im, pos)
row_im.paste(ch_im, (pos[0] + usize[quality][1], pos[1] + usize[quality][1]), mask=ch_im)
out_im.paste(row_im, offset)
self.trigger.emit(‘春联图片拼装完成!’)
if out_file:
out_im.convert(‘RGB’).save(out_file)
self.trigger.emit(‘春联保存成功!’)
UI部分代码
class GenerateScroll(QWidget):
def init(self):
super(GenerateScroll, self).init()
self.init_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(‘横批演示.png’))
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(‘设置上联’)

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。

🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。

🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。

🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。



相关文章
|
6月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
1589 2
|
5月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1011 68
|
10月前
|
存储 关系型数据库 MySQL
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
|
9月前
|
监控 Java 数据安全/隐私保护
阿里面试:SpringBoot启动时, 如何执行扩展代码?你们项目 SpringBoot 进行过 哪些 扩展?
阿里面试:SpringBoot启动时, 如何执行扩展代码?你们项目 SpringBoot 进行过 哪些 扩展?
|
6月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
930 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
6月前
|
API 语音技术 开发者
Python 项目打包,并上传到 PyPI,分享项目
本文介绍了如何使用 Poetry 打包并发布一个 Python 项目至 PyPI。内容包括:项目创建、配置 `pyproject.toml` 文件、构建软件包、上传至 PyPI、安装与使用。通过实例 iGTTS 展示了从开发到发布的完整流程,帮助开发者快速分享自己的 Python 工具。
|
8月前
|
负载均衡 架构师 Cloud Native
阿里面试:服务与发现 ,该选 CP 还是 AP?为什么?
阿里面试:服务与发现 ,该选 CP 还是 AP?为什么?
阿里面试:服务与发现 ,该选  CP 还是 AP?为什么?
|
8月前
|
数据安全/隐私保护 Python
阿里旺旺私信群发工具,淘宝商家私信群发软件,python代码分享
该代码实现了完整的淘宝旺旺群发流程,包含商品采集、消息模板定制和自动化发送功能
|
8月前
|
数据安全/隐私保护 Python
淘宝商家私信群发脚本,阿里旺旺私信群发工具,卖家私信批量发送插件【python框架】
使用Selenium自动化登录淘宝账号通过阿里旺旺网页版发送私信

推荐镜像

更多