PyQt数字转大写金额GUI工具开发及财务规范实现
目录
一、引言
二、GUI界面设计
1.效果演示
2.相关提示
3.界面设计.py
三、主要程序详解
1.导入模块和全局变量
2.初始化设置
3.大写转换
四、总程序代码
一、引言
在财务数据处理场景中,数字金额的大写转换是确保票据准确性和防伪性的重要环节。以跨平台GUI框架PyQt为主体,再将用户输入的数字通过规范化处理,自动转换为符合规定的标准大写格式(如壹、贰、佰、万等),同时支持零、整等特殊情况的分类判断。这种自动化转换不仅避免了人工输入错误的风险,还能显著提升财务人员的工作效率,有效助力于适合报销单、支票、合同等需要严格数字规范的场景。
二、GUI界面设计
使用PyQt5进行界面的搭建,界面如下:
初始界面搭建采用极简风格。用户通过输入数字,再点击“转换!”,即可在下方弹出相应的大写形式。
1.效果演示
当用户输入存在小数时,且在实际生活中,小数点后两位分别表示金额中的“角”和“分”,因此程序对小数点以后的位数最多设置为2;当用户输入为纯整数时,转换后的结果要符合“XXXX元整”的格式。
2.相关提示
针对输入为空和输入为0这两种无实义的情况,均会给出“请输入有效数字”的提示。
3.界面设计.py
通过pyuic5产生的GUI界面代码UI_CaiwuDaxie.py如下:
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'UI_CaiwuDaxie.ui'
#
# Created by: PyQt5 UI code generator 5.15.11
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.setEnabled(True)Form.resize(500, 390)Form.setMinimumSize(QtCore.QSize(500, 390))Form.setMaximumSize(QtCore.QSize(500, 390))icon = QtGui.QIcon()icon.addPixmap(QtGui.QPixmap(":/image1.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)Form.setWindowIcon(icon)self.label_5 = QtWidgets.QLabel(Form)self.label_5.setGeometry(QtCore.QRect(330, 50, 141, 31))font = QtGui.QFont()font.setFamily("Adobe Arabic")font.setPointSize(16)self.label_5.setFont(font)self.label_5.setObjectName("label_5")self.label_8 = QtWidgets.QLabel(Form)self.label_8.setGeometry(QtCore.QRect(90, 10, 371, 31))font = QtGui.QFont()font.setFamily("Adobe Arabic")font.setPointSize(18)font.setBold(False)font.setWeight(50)self.label_8.setFont(font)self.label_8.setObjectName("label_8")self.label_10 = QtWidgets.QLabel(Form)self.label_10.setGeometry(QtCore.QRect(410, 40, 71, 51))self.label_10.setText("")self.label_10.setPixmap(QtGui.QPixmap(":/image1.png"))self.label_10.setObjectName("label_10")self.lineEdit = QtWidgets.QLineEdit(Form)self.lineEdit.setGeometry(QtCore.QRect(40, 110, 181, 20))self.lineEdit.setObjectName("lineEdit")self.label = QtWidgets.QLabel(Form)self.label.setGeometry(QtCore.QRect(40, 150, 121, 16))self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(Form)self.label_2.setGeometry(QtCore.QRect(40, 80, 91, 21))self.label_2.setObjectName("label_2")self.label_3 = QtWidgets.QLabel(Form)self.label_3.setGeometry(QtCore.QRect(40, 180, 421, 191))font = QtGui.QFont()font.setFamily("Adobe Arabic")font.setPointSize(16)self.label_3.setFont(font)self.label_3.setFrameShape(QtWidgets.QFrame.StyledPanel)self.label_3.setText("")self.label_3.setTextFormat(QtCore.Qt.PlainText)self.label_3.setScaledContents(False)self.label_3.setAlignment(QtCore.Qt.AlignCenter)self.label_3.setWordWrap(True)self.label_3.setIndent(-1)self.label_3.setObjectName("label_3")self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setGeometry(QtCore.QRect(260, 110, 191, 23))self.pushButton.setObjectName("pushButton")self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "CaiwuDaxie"))self.label_5.setText(_translate("Form", "Designed By"))self.label_8.setText(_translate("Form", "财务办公——数字金额转大写"))self.label.setText(_translate("Form", "大写如下:"))self.label_2.setText(_translate("Form", "请输入金额:"))self.pushButton.setText(_translate("Form", "转换"))
import ziyuan_rc
三、主要程序详解
1.导入模块和全局变量
import sys
from UI_CaiwuDaxie import *
from PyQt5.QtWidgets import QApplication, QWidget
# 正则表达式
from PyQt5.QtGui import QRegExpValidator
# 保持窗口大小和qtdesigner中的一致
from PyQt5 import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)shuzi_dict = {'0': '零','1': '壹','2': '贰','3': '叁','4': '肆','5': '伍','6': '陆','7': '柒','8': '捌','9': '玖'}
导入前端页面设计文件:UI_CaiwuDaxie.py;因需要对用户输入作规范要求,故导入QRegExpValidator;;不懂为啥需要导入Qtcore的,请看