This repository has been archived on 2024-06-23. You can view files and clone it, but cannot push or open issues or pull requests.
mathdeptv2/工具v2/单一题号转为图片.py

60 lines
2.1 KiB
Python

from PySide6.QtWidgets import QWidget, QApplication, QFileDialog
from Ui_单一题号转为图片 import Ui_Form
from database_tools import *
import os
from datetime import datetime
class MyWindow(QWidget,Ui_Form):
def __init__(self):
super().__init__()
self.setupUi(self)
self.bind()
def bind(self):
self.pushButton_open.setDisabled(True)
self.pushButton_convert.clicked.connect(self.convert)
self.pushButton_open.clicked.connect(self.open)
self.lineEdit_ID.textChanged.connect(self.toggleopen)
self.lineEdit_dpi.textChanged.connect(self.toggleopen)
def convert(self):
self.time = datetime.now().strftime("%Y%m%d%H%M%S")
self.id = self.lineEdit_ID.text()
self.dpi = self.lineEdit_dpi.text()
pro_dict = load_dict("../题库0.3/Problems.json")
prefix = self.lineEdit_message.text().strip()
content = f"{prefix} {pro_dict[self.id.zfill(6)]['content']}"
latex_raw = ReadTextFile("模板文件/独立文件模板.txt")
#识别操作系统
if sys.platform != "win32":
latex_raw = re.sub(r"fontset[\s]*=[\s]*none","fontset = fandol",latex_raw)
latex_raw = re.sub(r"\\setCJKmainfont",r"% \\setCJKmainfont",latex_raw)
latexdata = StringSubstitute(r"<<待替换\d*>>",latex_raw,[content])
makedir("临时文件/pics")
SaveTextFile(latexdata,f"临时文件/pics/ID{self.id}-{self.dpi}-{self.time}.tex")
os.system(f"xelatex -interaction=batchmode -output-directory=临时文件/pics ID{self.id}-{self.dpi}-{self.time}.tex")
os.chdir("临时文件/pics")
os.system(f"pdftocairo -png -r {self.dpi} ID{self.id}-{self.dpi}-{self.time}.pdf")
os.chdir("../..")
self.pushButton_open.setEnabled(True)
def open(self):
startfile(os.path.join("临时文件/pics", f"ID{self.id}-{self.dpi}-{self.time}-1.png"))
def toggleopen(self):
self.pushButton_open.setDisabled(True)
if __name__ == '__main__':
app = QApplication([])
windows = MyWindow()
windows.show()
app.exec()