很多兄弟觉得自己字写的不好什么的,没事,咱们直接用python来生成,对着多练练就能写出一手好看的艺术签名了,小姐姐看了直呼好看~
啊这,一笔学不来,算了,咱们敲代码吧…
1.需要用到的模块
importrequestsfromPILimportImagefromPyQt5.QtGuiimport*fromPyQt5.QtWidgetsimport*fromPyQt5importQtWidgets,QtGui#兄弟们学习python,有时候不知道怎么学,从哪里开始学。掌握了基本的一些语法或者做了两个案例后,不知道下一步怎么走,不知道如何去学习更加高深的知识。#那么对于这些大兄弟们,我准备了大量的免费视频教程,PDF电子书籍,以及视频源的源代码!#还会有大佬解答!#都在这个群里了924040232#欢迎加入,一起讨论一起学习!
2.窗口名字/图标/大小/布局
self.setFixedSize(600,500)self.setWindowTitle('嗨学编程—艺术签名生成器')self.setWindowIcon(QIcon('resource/icon/icon.jpg'))self.grid=QGridLayout()
3.必要组件的定义
self.show_label=QLabel()self.show_label.setScaledContents(True)self.show_label.setMaximumSize(600,400)self.show_image=Image.open('resource/image/ori.jpg').convert('RGB')self.updateimage()self.show_image_ext='jpg'self.name_label=QLabel('输入您的姓名:')self.font_label=QLabel('艺术签名字体:')self.color_label=QLabel('艺术签名颜色:')
4.输入框
self.name_edit=QLineEdit()self.name_edit.setText('签名生成器')
5.保存/生成按钮
self.generate_button=QPushButton('生成艺术签名')self.save_button=QPushButton('保存艺术签名')
6.下拉框
self.font_combobox=QComboBox()foritemin['一笔艺术签','连笔商务签','一笔商务签','真人手写','暴躁字']:self.font_combobox.addItem(item)self.color_combobox=QComboBox()foritemin['Black','Blue','Red','Green','Yellow','Pink','DeepSkyBlue','Cyan','Orange','Seashell']:self.color_combobox.addItem(item)
7.组件布局
self.grid.addWidget(self.show_label,0,0,5,5)self.grid.addWidget(self.name_label,5,0,1,1)self.grid.addWidget(self.name_edit,5,1,1,4)self.grid.addWidget(self.font_label,6,0,1,1)self.grid.addWidget(self.font_combobox,6,1,1,4)self.grid.addWidget(self.color_label,7,0,1,1)self.grid.addWidget(self.color_combobox,7,1,1,4)self.grid.addWidget(self.generate_button,8,3,1,1)self.grid.addWidget(self.save_button,8,4,1,1)self.setLayout(self.grid)
8.事件绑定
self.generate_button.clicked.connect(self.generate)self.save_button.clicked.connect(self.save)
9.生成签名
10.更新界面上的图片
defupdateimage(self):ifself.show_imageisNone:returnfp=io.BytesIO()self.show_image.save(fp,'JPEG')qtimage=QtGui.QImage()qtimage.loadFromData(fp.getvalue(),'JPEG')qtimage_pixmap=QtGui.QPixmap.fromImage(qtimage)self.show_label.setPixmap(qtimage_pixmap)
11.签名保存
defsave(self):ifself.show_imageisNone:returnfilename=QFileDialog.getSaveFileName(self,'保存','./sign.%s'%self.show_image_ext,'所有文件(*)')iffilename[0]:self.show_image.save(filename[0])QDialog().show()
12.run
if__name__=='__main__':app=QApplication(sys.argv)gui=ArtSignGenerator()gui.show()sys.exit(app.exec_())
我从来不吝啬源码,都直接放出来,不像那些,哈哈哈,懂的都懂。
只是粗糙的实现了这些功能,大家可以换着花样玩玩,不喜勿喷。