如何利用PyQt5生成过年春联(pyqt5,开发技术)

时间:2024-04-28 15:23:11 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

需求说明:

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

如何利用PyQt5生成过年春联

如何利用PyQt5生成过年春联

实现过程:

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

http://xufive.sdysit.com/tk

春联生成部分参考了 CSDN 博客平台。

网络数据获取相关模块

importio#pythonIO处理模块fromPILimportImage#图像处理模块importrequests#网络请求模块

UI 相关模块

fromPyQt5.QtWidgetsimport*fromPyQt5.QtCoreimport*fromPyQt5.QtGuiimport*

主题样式模块引用

fromQCandyUiimportCandyWindow

应用操作相关模块

importsysimportos

UI界面主要代码展示

definit_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('横批演示.jpg'))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('设置上联')self.up_text=QLineEdit()self.up_text.setPlaceholderText('请输入上联')self.down_label=QLabel()self.down_label.setText('设置下联')self.down_text=QLineEdit()self.down_text.setPlaceholderText('请输入下联')self.h_label=QLabel()self.h_label.setText('设置横批')self.h_text=QLineEdit()self.h_text.setPlaceholderText('请输入横批')self.thread_=WorkThread(self)self.thread_.trigger.connect(self.update_log)self.thread_.finished.connect(self.finished)self.save_path=QLineEdit()self.save_path.setReadOnly(True)self.save_btn=QPushButton()self.save_btn.setText('存储路径')self.save_btn.clicked.connect(self.save_btn_click)form.addRow(self.up_label,self.up_text)form.addRow(self.down_label,self.down_text)form.addRow(self.h_label,self.h_text)form.addRow(self.save_path,self.save_btn)vbox=QVBoxLayout()self.start_btn=QPushButton()self.start_btn.setText('开始生成春联')self.start_btn.clicked.connect(self.start_btn_click)vbox.addLayout(form)vbox.addWidget(self.start_btn)hbox.addWidget(self.brower)hbox.addLayout(vbox)vbox_main.addWidget(self.image_label)vbox_main.addLayout(hbox)self.setLayout(vbox_main)

槽函数的应用

defupdate_log(self,text):'''槽函数:向文本浏览器中写入内容:paramtext::return:'''cursor=self.brower.textCursor()cursor.movePosition(QTextCursor.End)self.brower.append(text)self.brower.setTextCursor(cursor)self.brower.ensureCursorVisible()defsave_btn_click(self):dicr=QFileDialog.getExistingDirectory(self,'选择文件夹',os.getcwd())self.save_path.setText(dicr)defstart_btn_click(self):self.start_btn.setEnabled(False)self.thread_.start()deffinished(self,finished):iffinishedisTrue:self.start_btn.setEnabled(True)h_image=self.save_path.text().strip()+'/横批.jpg'ifos.path.isfile(h_image):self.image_label.setPixmap(QPixmap(h_image))self.update_log('由于上下联不好预览,请使用图片查看器预览,目前仅支持横批图片预览...')

春联文字获取主题代码

defrun(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()ifup_text==''ordown_text==''orh_text==''orsave_path=='':self.trigger.emit('参数设置不允许为空,请设置好后重新开始!')self.finished.emit(True)else:text=up_text+''+down_textself.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)

文字图片获取部分

defget_word_image(self,ch='bg',pre=1.0):'''单文字图片下载函数:paramch:默认网络请求参数'bg':parampre:单个文字对象:return:图像对象'''res=io.BytesIO(requests.post(url='http://xufive.sdysit.com/tk',data={'ch':ch}).content)image=Image.open(res)w,h=image.sizew,h=int(w*float(pre)),int(h*float(pre))returnimage.resize((w,h))#单个文字的形状是正方形,所以这里的长、宽都是一致的

效果图

如何利用PyQt5生成过年春联

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:如何利用PyQt5生成过年春联的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:如何下载安装PopLDdecay下一篇:

7 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18