如何用python制作中秋节贺卡
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关如何用python制作中秋节贺卡,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。导语转眼,八月十五中秋节即将到来,中秋节以月
千家信息网最后更新 2026年11月03日如何用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安全错误
数据库的锁怎样保障安全
互联网金融监管科技数据
圆梦互联网科技
互联网金融 金融科技
嘟嘟瓜互联网科技
杭州互联网科技公司
迪茉互联网科技
南京欣网互联网科技
新浪科技互联网
互联网科技logo
滨湖区互联网智能科技产品供应
太原新华互联网科技学校怎么样
移动互联网科技股
黑科技闪耀互联网之光
互联网科技公司实习生
健康食品互联网创新科技园项目
华夏恒生互联网科技013171
山东星卡互联网科技有限公司官网
容联科技互联网电商
广东猫王互联网科技有限公司电话
六子台科技互联网展会
互联网科技海报
互联网科技社
互联网金融与金融科技
浩特互联网科技
苏州互联网科技贷款公司
重庆威客帮互联网科技
玉溪新华互联网科技好不好
唯美互联网科技
互联网时代高科技布局
安徽零酒互联网科技有限公司