如何用python制作中秋节贺卡
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章将为大家详细讲解有关如何用python制作中秋节贺卡,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。导语转眼,八月十五中秋节即将到来,中秋节以月
千家信息网最后更新 2025年01月21日如何用python制作中秋节贺卡
这篇文章将为大家详细讲解有关如何用python制作中秋节贺卡,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
导语
转眼,八月十五中秋节即将到来,中秋节以月之圆兆人之团圆,
为寄托思念故乡,思念亲人之情,也是我国最具团圆意味的一个传统节日。
正文
基于pyqt5做的界面化中秋贺卡生成器。
(1)首先准备好相应的素材、如文字字体、贺卡背景等,大家可以随机制作。
(2)咳咳咳!之前有人说我文章前文太长,让我直接上代码。
class newyearCardGUI(QtWidgets.QWidget): def __init__(self): super(newyearCardGUI, self).__init__() self.setFixedSize(600, 500) self.setWindowTitle('中秋贺卡生成器-源码基地:#959755565#') self.setWindowIcon(QIcon('icon/icon.png')) self.grid = QGridLayout() # 一些全局变量 self.card_image = None self.font_size = 35 # 定义组件 # --Label self.content_label = QLabel('内容路径:') self.bg_label = QLabel('背景路径:') self.font_label = QLabel('字体路径:') self.fontcolor_label = QLabel('字体颜色:') self.show_label = QLabel() self.show_label.setScaledContents(True) self.show_label.setMaximumSize(600, 300) # --输入框 self.content_edit = QLineEdit() self.content_edit.setText('contents/1.card') self.bg_edit = QLineEdit() self.bg_edit.setText('bgimages/1.png') self.font_edit = QLineEdit() self.font_edit.setText('fonts/font.TTF') # --按钮 self.choose_content_button = QPushButton('选择路径') self.choose_bg_button = QPushButton('选择路径') self.choose_font_button = QPushButton('选择路径') self.generate_button = QPushButton('生成贺卡') self.save_button = QPushButton('保存贺卡') # --下拉框 self.font_color_combobox = QComboBox() for color in ['red', 'white', 'black', 'blue', 'yellow', 'green']: self.font_color_combobox.addItem(color) # 布局 self.grid.addWidget(self.show_label, 0, 0, 5, 5) self.grid.addWidget(self.content_label, 5, 0, 1, 1) self.grid.addWidget(self.content_edit, 5, 1, 1, 3) self.grid.addWidget(self.choose_content_button, 5, 4, 1, 1) self.grid.addWidget(self.bg_label, 6, 0, 1, 1) self.grid.addWidget(self.bg_edit, 6, 1, 1, 3) self.grid.addWidget(self.choose_bg_button, 6, 4, 1, 1) self.grid.addWidget(self.font_label, 7, 0, 1, 1) self.grid.addWidget(self.font_edit, 7, 1, 1, 3) self.grid.addWidget(self.choose_font_button, 7, 4, 1, 1) self.grid.addWidget(self.fontcolor_label, 8, 0, 1, 1) self.grid.addWidget(self.font_color_combobox, 8, 1, 1, 1) self.grid.addWidget(self.generate_button, 8, 3, 1, 1) self.grid.addWidget(self.save_button, 8, 4, 1, 1) self.setLayout(self.grid) # 事件绑定 self.choose_content_button.clicked.connect(self.openContentFilepath) self.choose_bg_button.clicked.connect(self.openBGFilepath) self.choose_font_button.clicked.connect(self.openFontFilepath) self.generate_button.clicked.connect(self.generate) self.save_button.clicked.connect(self.save) self.generate()
(2)生成贺卡。
def generate(self): # 检查路径是否存在 content_path = self.content_edit.text() bg_path = self.bg_edit.text() font_path = self.font_edit.text() font_color = self.font_color_combobox.currentText() if (not self.checkFilepath(content_path)) or (not self.checkFilepath(bg_path)) or (not self.checkFilepath(font_path)): self.card_image = None return False # 写贺卡 contents = open(content_path, encoding='utf-8').read().split('\n') font_card = ImageFont.truetype(font_path, self.font_size) image = Image.open(bg_path).convert('RGB') draw = ImageDraw.Draw(image) draw.text((180, 30), contents[0], font=font_card, fill=font_color) for idx, content in enumerate(contents[1: -1]): draw.text((220, 40+(idx+1)*40), content, font=font_card, fill=font_color) draw.text((180, 40+(idx+2)*40+10), contents[-1], font=font_card, fill=font_color) # 显示 fp = io.BytesIO() image.save(fp, 'BMP') qtimg = QtGui.QImage() qtimg.loadFromData(fp.getvalue(), 'BMP') qtimg_pixmap = QtGui.QPixmap.fromImage(qtimg) self.show_label.setPixmap(qtimg_pixmap) self.card_image = image
(3)素材都是准备的多份,背景文字选取路径自己设置。
def openContentFilepath(self): filepath = QFileDialog.getOpenFileName(self, "请选取贺卡内容文件", '.') self.content_edit.setText(filepath[0]) def openBGFilepath(self): filepath = QFileDialog.getOpenFileName(self, "请选取贺卡背景图片", '.') self.bg_edit.setText(filepath[0]) def openFontFilepath(self): filepath = QFileDialog.getOpenFileName(self, "请选取字体文件", '.') self.font_edit.setText(filepath[0])
(4)生成的贺卡保存下来。
def save(self): filename = QFileDialog.getSaveFileName(self, '保存', './card.jpg', '所有文件(*)') if filename[0] != '' and self.card_image: self.card_image.save(filename[0]) QDialog().show()
好啦, 一张完整的贺卡显示就出来啦如下:
附完整代码:
'''Function: 生成中秋祝福贺卡csdn账号:顾木子吖'''import osimport ioimport sysfrom PyQt5.QtGui import QIconfrom PyQt5.QtWidgets import *from PyQt5 import QtWidgets, QtGuifrom PIL import Image, ImageDraw, ImageFont '''生成中秋祝福贺卡'''class newyearCardGUI(QtWidgets.QWidget): def __init__(self): super(newyearCardGUI, self).__init__() self.setFixedSize(600, 500) self.setWindowTitle('中秋贺卡生成器-源码基地:#959755565#') self.setWindowIcon(QIcon('icon/icon.png')) self.grid = QGridLayout() # 一些全局变量 self.card_image = None self.font_size = 35 # 定义组件 # --Label self.content_label = QLabel('内容路径:') self.bg_label = QLabel('背景路径:') self.font_label = QLabel('字体路径:') self.fontcolor_label = QLabel('字体颜色:') self.show_label = QLabel() self.show_label.setScaledContents(True) self.show_label.setMaximumSize(600, 300) # --输入框 self.content_edit = QLineEdit() self.content_edit.setText('contents/1.card') self.bg_edit = QLineEdit() self.bg_edit.setText('bgimages/1.png') self.font_edit = QLineEdit() self.font_edit.setText('fonts/font.TTF') # --按钮 self.choose_content_button = QPushButton('选择路径') self.choose_bg_button = QPushButton('选择路径') self.choose_font_button = QPushButton('选择路径') self.generate_button = QPushButton('生成贺卡') self.save_button = QPushButton('保存贺卡') # --下拉框 self.font_color_combobox = QComboBox() for color in ['red', 'white', 'black', 'blue', 'yellow', 'green']: self.font_color_combobox.addItem(color) # 布局 self.grid.addWidget(self.show_label, 0, 0, 5, 5) self.grid.addWidget(self.content_label, 5, 0, 1, 1) self.grid.addWidget(self.content_edit, 5, 1, 1, 3) self.grid.addWidget(self.choose_content_button, 5, 4, 1, 1) self.grid.addWidget(self.bg_label, 6, 0, 1, 1) self.grid.addWidget(self.bg_edit, 6, 1, 1, 3) self.grid.addWidget(self.choose_bg_button, 6, 4, 1, 1) self.grid.addWidget(self.font_label, 7, 0, 1, 1) self.grid.addWidget(self.font_edit, 7, 1, 1, 3) self.grid.addWidget(self.choose_font_button, 7, 4, 1, 1) self.grid.addWidget(self.fontcolor_label, 8, 0, 1, 1) self.grid.addWidget(self.font_color_combobox, 8, 1, 1, 1) self.grid.addWidget(self.generate_button, 8, 3, 1, 1) self.grid.addWidget(self.save_button, 8, 4, 1, 1) self.setLayout(self.grid) # 事件绑定 self.choose_content_button.clicked.connect(self.openContentFilepath) self.choose_bg_button.clicked.connect(self.openBGFilepath) self.choose_font_button.clicked.connect(self.openFontFilepath) self.generate_button.clicked.connect(self.generate) self.save_button.clicked.connect(self.save) self.generate() '''生成贺卡''' def generate(self): # 检查路径是否存在 content_path = self.content_edit.text() bg_path = self.bg_edit.text() font_path = self.font_edit.text() font_color = self.font_color_combobox.currentText() if (not self.checkFilepath(content_path)) or (not self.checkFilepath(bg_path)) or (not self.checkFilepath(font_path)): self.card_image = None return False # 写贺卡 contents = open(content_path, encoding='utf-8').read().split('\n') font_card = ImageFont.truetype(font_path, self.font_size) image = Image.open(bg_path).convert('RGB') draw = ImageDraw.Draw(image) draw.text((180, 30), contents[0], font=font_card, fill=font_color) for idx, content in enumerate(contents[1: -1]): draw.text((220, 40+(idx+1)*40), content, font=font_card, fill=font_color) draw.text((180, 40+(idx+2)*40+10), contents[-1], font=font_card, fill=font_color) # 显示 fp = io.BytesIO() image.save(fp, 'BMP') qtimg = QtGui.QImage() qtimg.loadFromData(fp.getvalue(), 'BMP') qtimg_pixmap = QtGui.QPixmap.fromImage(qtimg) self.show_label.setPixmap(qtimg_pixmap) self.card_image = image '''打开贺卡内容文件''' def openContentFilepath(self): filepath = QFileDialog.getOpenFileName(self, "请选取贺卡内容文件", '.') self.content_edit.setText(filepath[0]) '''打开贺卡背景图片文件''' def openBGFilepath(self): filepath = QFileDialog.getOpenFileName(self, "请选取贺卡背景图片", '.') self.bg_edit.setText(filepath[0]) '''打开字体路径''' def openFontFilepath(self): filepath = QFileDialog.getOpenFileName(self, "请选取字体文件", '.') self.font_edit.setText(filepath[0]) '''保存贺卡''' def save(self): filename = QFileDialog.getSaveFileName(self, '保存', './card.jpg', '所有文件(*)') if filename[0] != '' and self.card_image: self.card_image.save(filename[0]) QDialog().show() '''检查文件是否存在''' def checkFilepath(self, filepath): if not filepath: return False return os.path.isfile(filepath) '''run'''if __name__ == '__main__': app = QApplication(sys.argv) gui = newyearCardGUI() gui.show() sys.exit(app.exec_())
好啦!中秋贺卡生成器就制作完成啦,制作不易,中秋快落~
关于如何用python制作中秋节贺卡就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
贺卡
路径
生成
文件
字体
内容
背景
选择
制作
中秋贺卡
生成器
图片
文章
背景图片
检查
事件
代码
全局
变量
基地
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎么在服务器上发布网站
公办网络安全性
pxe服务器 win7
宽带网络安全密钥是什么
管家婆辉煌安装数据库教程
网络安全周校园日答题
数据库覆盖的意思
网络安全分为多少级
网络安全共享网络文明征文
数据库怎么查找账户密码
税务强化网络安全
国外对中国文化数据库
加强网络安全信息收集
计算机网络安全漏洞定义
供应链企业网络安全案例
网络安全宣传周活动知识答题
县城网络安全防范工作
网络安全日小班
云霄县艺嘉网络技术工作室
山西通用软件开发近期价格
网络安全制度法律法规
软件开发发包指的是
关系型数据库操作考点
迷你服务器排名
服务器cpu哪个好
手机软件开发自学步骤图
网络安全敲代码
湖南口碑好服务器机柜
为什么黑客要去攻击服务器
北斗三代软件开发背景怎么写