利用Pyside2实现程序图形界面,实现效果如下:
1.实现竖式算式生成,并将生成结果保存为word文档。
import random
def shushi(): chushu = random.randint(2, 9) beichushu1 = random.randint(1, chushu - 1) beichushu2 = random.randint(0, 9) beichushu = beichushu1 * 10 + beichushu2 # print(f'{beichushu}÷{chushu}= ') return beichushu, chushu def generate_shushi(): import docx from docx import Document from docx.shared import Inches from docx.dml.color import ColorFormat from docx.shared import Pt from docx.shared import RGBColor from docx.oxml.ns import qn from docx.enum.style import WD_STYLE_TYPE from docx.enum.text import WD_ALIGN_PARAGRAPH document = Document() # 设置默认字体 document.styles['Normal'].font.name = '微软雅黑' document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑') # 创建自定义段落样式(第一个参数为样式名, 第二个参数为样式类型, 1为段落样式, 2为字符样式, 3为表格样式) UserStyle1 = document.styles.add_style('UserStyle1', 1) # 设置字体尺寸 UserStyle1.font.size = Pt(16) # 设置字体颜色 # UserStyle1.font.color.rgb = RGBColor(0xff, 0xde, 0x00) # 居中文本 UserStyle1.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER # 设置中文字体 UserStyle1.font.name = '微软雅黑' UserStyle1._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑') dir1 = os.getcwd() for i in range(0, 60): if i % 15 == 0 and i > 0: p2 = document.add_paragraph('=' * 28, style=UserStyle1) if i % 5 == 0: p2 = document.add_paragraph('', style=UserStyle1) a, b = shushi() # 使用自定义字符样式 p2.add_run(f'{a}÷{b}= ') f2 = dir1 + '\竖式计算题60道.docx' document.save(f2) print(f'{f2} 文档生成完毕!')
2.利用Pyside2实现图形界面,完整代码如下:
【shushi_win_ui.py】
from PySide2.QtCore import * from PySide2.QtGui import * from PySide2.QtWidgets import * class Ui_MainWindow(object): def setupUi(self, MainWindow): if not MainWindow.objectName(): MainWindow.setObjectName(u"MainWindow") MainWindow.resize(602, 239) MainWindow.setToolTipDuration(-3) self.centralwidget = QWidget(MainWindow) self.centralwidget.setObjectName(u"centralwidget") self.label = QLabel(self.centralwidget) self.label.setObjectName(u"label") self.label.setGeometry(QRect(50, 40, 491, 16)) self.pushButton = QPushButton(self.centralwidget) self.pushButton.setObjectName(u"pushButton") self.pushButton.setGeometry(QRect(160, 100, 261, 28)) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(MainWindow) self.menubar.setObjectName(u"menubar") self.menubar.setGeometry(QRect(0, 0, 602, 26)) MainWindow.setMenuBar(self.menubar) self.statusbar = QStatusBar(MainWindow) self.statusbar.setObjectName(u"statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow) # setupUi def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", '小学用竖式计算题生成工具', None)) self.label.setText(QCoreApplication.translate("MainWindow", u"\u6b22\u8fce\u4f7f\u7528\u672c\u5de5\u5177\u3002\u4f5c\u8005\uff1a\u5c0f\u767d\u7528python https://blog.csdn.net/cdl3", None)) self.pushButton.setText(QCoreApplication.translate("MainWindow", u"\u4e00\u952e\u751f\u6210\u7ad6\u5f0f\u8ba1\u7b97\u9898", None)) # retranslateUi
【main.py】
import os import sys import random from PySide2 import QtGui, QtWidgets, QtCore from PySide2.QtWidgets import QApplication, QMainWindow, QMessageBox from shushi_win_ui import Ui_MainWindow def shushi(): chushu = random.randint(2, 9) beichushu1 = random.randint(1, chushu - 1) beichushu2 = random.randint(0, 9) beichushu = beichushu1 * 10 + beichushu2 # print(f'{beichushu}÷{chushu}= ') return beichushu, chushu def generate_shushi(): import docx from docx import Document from docx.shared import Inches from docx.dml.color import ColorFormat from docx.shared import Pt from docx.shared import RGBColor from docx.oxml.ns import qn from docx.enum.style import WD_STYLE_TYPE from docx.enum.text import WD_ALIGN_PARAGRAPH document = Document() # 设置默认字体 document.styles['Normal'].font.name = '微软雅黑' document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑') # 创建自定义段落样式(第一个参数为样式名, 第二个参数为样式类型, 1为段落样式, 2为字符样式, 3为表格样式) UserStyle1 = document.styles.add_style('UserStyle1', 1) # 设置字体尺寸 UserStyle1.font.size = Pt(16) # 设置字体颜色 # UserStyle1.font.color.rgb = RGBColor(0xff, 0xde, 0x00) # 居中文本 UserStyle1.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER # 设置中文字体 UserStyle1.font.name = '微软雅黑' UserStyle1._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑') dir1 = os.getcwd() for i in range(0, 60): if i % 15 == 0 and i > 0: p2 = document.add_paragraph('=' * 28, style=UserStyle1) if i % 5 == 0: p2 = document.add_paragraph('', style=UserStyle1) a, b = shushi() # 使用自定义字符样式 p2.add_run(f'{a}÷{b}= ') f2 = dir1 + '\竖式计算题60道.docx' document.save(f2) print(f'{f2} 文档生成完毕!') class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self): super(MainWindow, self).__init__() self.setupUi(self) # 添加槽链接 self.pushButton.clicked.connect(self.magic) def magic(self): # 随机生成60到竖式计算题 generate_shushi() QMessageBox.about(self, '成功', '竖式计算word文档成功生成') # Press the green button in the gutter to run the script. if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_())
以上内容,请问你学会了吗?
【发文章不易,请各位多多支持、点赞!】