GUI编程之路内计费工具

基于Matlab的汽车出入库计时计费系统 MATLAB车牌识别计时计费出入库系统开题报告 论文题目 基于Matlab的汽车出入库计时计费系统 1.论文(设计)目的及意义 随着汽车数量的增加,城市交通状况日益受到人们的重视,如何进行有效的交通管理更是成为了人们关注的焦点。针对此问题,人们运用新的科学技术,相继研制开发出了各种交通道路监视、管理系统。这些系统通过车辆检测装置对过往的车辆实施检测,提取有关交通数据,达到监控、管理和指挥交通的目的。因此,智能交通系统ITS(intelligent traffic system)已成为世界交通领域研究的重要 阅读详情
import os
import sys
from PyQt5.QtCore import QObject, pyqtSignal
from PyQt5.QtGui import QTextCursor
from jifei3 import Ui_Form
from PyQt5 import  QtWidgets
from PyQt5.QtWidgets import *
import requests
import pandas as pd
import csv


class Signal(QObject):

    text_update = pyqtSignal(str)

    def write(self, text):
        self.text_update.emit(str(text))
        QApplication.processEvents()

class MyClass(QWidget, Ui_Form):
    def __init__(self):
        super().__init__()
        self.InitUi()

    def InitUi(self):
        self.setupUi(self)
        self.setWindowTitle("路内计费测试工具")
        self.show()
        self.txt = QtWidgets.QTextEdit()
        self.pushButton.clicked.connect(self.path)
        self.pushButton_2.clicked.connect(self.jifei)
        # 实时显示输出, 将控制台的输出重定向到界面中
        sys.stdout = Signal()
        sys.stdout.text_update.connect(self.updatetext)

    def updatetext(self, text):
        """
            更新textBrowser
        """
        cursor = self.textBrowser.textCursor()
        cursor.movePosition(QTextCursor.End)
        self.textBrowser.append(text)
        self.textBrowser.setTextCursor(cursor)
        self.textBrowser.ensureCursorVisible()

    def environment(self):
        if self.comboBox.currentText()=="测试环境":
            url="https://apitest.xtingcloud.com/zk_xm_test/charge/test?orderId="
            return url
        else:
            url = "https://api.xtingcloud.com/zk_zk/charge/test?orderId="
            return url

    def path(self):
        self.dir_name = QFileDialog.getOpenFileName(None, '选择文件', os.getcwd())
        dir_path=self.dir_name
        dir_path2=dir_path[0]
        self.lineEdit_4.setText(dir_path2)

    def get_exceldata(self):
        try:
            if self.comboBox_2.currentText()=="大沥" and self.comboBox_3.currentText()=="一类区域" and self.comboBox_4.currentText()=="小型车" and self.comboBox_5.currentText() == "全部":
                raw_data = pd.read_excel(self.lineEdit_4.text(), header=0,sheet_name="大沥一类区域小型车计费规则(燃油&新能源车)")  # header=0表示第一行是表头,就自动去除了
                data = raw_data.values  # 只提取表中信息
                return data

            elif self.comboBox_2.currentText()=="永安" and self.comboBox_3.currentText()=="繁华路段" and self.comboBox_4.currentText()=="全部" and self.comboBox_5.currentText() == "全部":
                raw_data = pd.read_excel(self.lineEdit_4.text(), header=0,sheet_name="永安繁华路段小中大型车计费规则(燃油&新能源车)")
                data = raw_data.values  # 只提取表中信息
                return data

            elif self.comboBox_2.currentText()=="全部" and self.comboBox_3.currentText()=="全部" and self.comboBox_4.currentText()=="全部" and self.comboBox_5.currentText() == "全部":
                #大沥一类区域小型车计费规则(燃油&新能源车)
                raw_data = pd.read_excel(self.lineEdit_4.text(), header=0,
                                         sheet_name="大沥一类区域小型车计费规则(燃油&新能源车)")  # header=0表示第一行是表头,就自动去除了
                data1 = raw_data.values  # 只提取表中信息
                list1 = data1.tolist()
                #数据条数
                self.output_dali=len(list1)
                #永安繁华路段小中大型车计费规则(燃油&新能源车)
                raw_data2 = pd.read_excel(self.lineEdit_4.text(), header=0,
                                          sheet_name="永安繁华路段小中大型车计费规则(燃油&新能源车)")  # header=0表示第一行是表头,就自动去除了
                data2 = raw_data2.values  # 只提取表中信息
                list2 = data2.tolist()
                # 数据条数
                self.output_yonan=len(list2)
                list3=list1+list2
                self.output_all = len(list3)
                self.output_all=self.output_all+1
                return list3

        except Exception as e:
            print(8888888)

    #获取计费接口返回的数据(如果选项不都是全部用这个函数)
    def postdata(self,starttime,endtime) -> object:
        try:
            url1=self.environment()
            #大沥一类区域小型车计费规则(燃油&新能源车),订单号已写死
            self.url2_dali1 = url1 + f"671035385089884170&startTime={starttime}&endTime={endtime}"
            #永安繁华路段小中大型车计费规则(燃油&新能源车),订单号已写死
            self.url2_yonan1 = url1 + f"676746866603327498&startTime={starttime}&endTime={endtime}"

            #大沥一类区域小型车计费规则(燃油&新能源车)计费请求
            if self.comboBox_2.currentText() == "大沥" and self.comboBox_3.currentText() == "一类区域" and self.comboBox_4.currentText() == "小型车" and self.comboBox_5.currentText() == "全部":
                payload = {}
                headers = {

                    'Content-Type': 'application/json',
                    'User-Agent': 'Mozilla / 5.0(Windows NT 6.1;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 98.0.4758.102Safari / 537.36'
                }
                response = requests.request("GET", self.url2_dali1, headers=headers, data=payload)
                rez = response.json()["res"]["data"]["payment"]
                return rez
            # 永安繁华路段小中大型车计费规则(燃油&新能源车)计费请求
            elif self.comboBox_2.currentText() == "永安" and self.comboBox_3.currentText() == "繁华路段" and self.comboBox_4.currentText() == "全部" and self.comboBox_5.currentText() == "全部":
                payload = {}
                headers = {

                    'Content-Type': 'application/json',
                    'User-Agent': 'Mozilla / 5.0(Windows NT 6.1;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 98.0.4758.102Safari / 537.36'
                }

                response = requests.request("GET", self.url2_yonan1, headers=headers, data=payload)
                rez = response.json()["res"]["data"]["payment"]
                return rez

        except Exception as e:
            print(444444444)

    # 获取计费接口返回的数据(如果选项都是全部用这个函数)
    def postdata2(self, starttime, endtime):
        url1 = self.environment()
        self.url2_dali1 = url1 + f"671035385089884170&startTime={starttime}&endTime={endtime}"
        self.url2_yonan1 = url1 + f"676746866603327498&startTime={starttime}&endTime={endtime}"
        if self.wudi <= self.output_dali:
            payload = {}
            headers = {

                'Content-Type': 'application/json',
                'User-Agent': 'Mozilla / 5.0(Windows NT 6.1;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 98.0.4758.102Safari / 537.36'
            }
            response = requests.request("GET", self.url2_dali1, headers=headers, data=payload)
            rez = response.json()["res"]["data"]["payment"]
            self.wudi =self.wudi+1
            return rez

        elif self.wudi <= self.output_all:
            payload = {}
            headers = {

                'Content-Type': 'application/json',
                'User-Agent': 'Mozilla / 5.0(Windows NT 6.1;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 98.0.4758.102Safari / 537.36'

            }
            response = requests.request("GET", self.url2_yonan1, headers=headers, data=payload)
            rez = response.json()["res"]["data"]["payment"]
            self.wudi = self.wudi + 1
            return rez

    def jifei(self):
        if self.lineEdit_4.text()=="":
            QMessageBox.about(self, '提示','文件地址好像还没填哦!')
            return

        if self.comboBox_2.currentText() == "大沥" and self.comboBox_3.currentText() == "一类区域" and self.comboBox_4.currentText() == "小型车" and self.comboBox_5.currentText() == "全部":
            print("地区:大沥")
            print("路段类型:一类区域")
            print("车辆类型:小型车")
            print("车辆属性:燃油车&新能源车")

        elif self.comboBox_2.currentText() == "永安" and self.comboBox_3.currentText() == "繁华路段" and self.comboBox_4.currentText() == "全部" and self.comboBox_5.currentText() == "全部":
            print("地区:永安")
            print("路段类型:繁华路段")
            print("车辆类型:小型车")
            print("车辆属性:燃油车&新能源车")

        elif self.comboBox_2.currentText() == "全部" and self.comboBox_3.currentText() == "全部" and self.comboBox_4.currentText() == "全部" and self.comboBox_5.currentText() == "全部":
            print("地区:全部")
            print("路段类型:全部")
            print("车辆类型:全部")
            print("车辆属性:全部")

        else:
            print("还没有这个类型的计费规则哦!")

        self.m=0
        self.n=0
        self.b=0
        if os.path.exists("测试明细.csv"):
            os.remove("测试明细.csv")
        try:
            if self.comboBox_2.currentText() == "大沥" and self.comboBox_3.currentText() == "一类区域" and self.comboBox_4.currentText() == "小型车" and self.comboBox_5.currentText() == "全部":
                for i in self.get_exceldata():
                    self.pay = i[7]
                    starttime = i[5]
                    endtime = i[6]
                    sumpay = self.postdata(starttime, endtime)
                    sumpay = sumpay / 100
                    print("案例编号:" + f"{i[0]}")
                    print("入场时间:" + f"{i[5]}")
                    print("离场时间:" + f"{i[6]}")
                    print("理论值:" + f"{self.pay}", "实际计算值:" + f"{sumpay}")
                    if sumpay == self.pay:
                        print("测试结果:通过!")
                        self.m=self.m+1
                        self.testresult="通过"

                    else:
                        print("测试结果:失败!")
                        self.n = self.n + 1
                        print(self.n)
                        self.testresult = "失败"

                    Area = "测试地区"
                    RoadType = "路段类型"
                    CaseNo = "案例编号"
                    EntryTimes = "入场时间"
                    leaveTimes = "离场时间"
                    ExcepetValue = "理论值"
                    ActualValue = "实际计算值"
                    Testresult = "测试结果"
                    CarAttribute="车辆属性"
                    CarType="车辆类型"
                    # csv header
                    fieldnames = [Area, RoadType,CarAttribute,CarType,CaseNo, EntryTimes, leaveTimes, ExcepetValue, ActualValue, Testresult]
                    # csv data
                    mydict = [
                        {CaseNo: i[0],Area:i[1], RoadType:i[2] ,CarAttribute:i[3],CarType:i[4] ,EntryTimes: i[5], leaveTimes: i[6], ExcepetValue: i[7], ActualValue: sumpay,
                         Testresult: self.testresult}]
                    with open('测试明细.csv', 'a+', encoding='UTF8', newline='') as f:
                        writer = csv.DictWriter(f, fieldnames=fieldnames)
                        if self.b==0:
                            writer.writeheader()
                            self.b=self.b+1
                        writer.writerows(mydict)

            elif self.comboBox_2.currentText() == "永安" and self.comboBox_3.currentText() == "繁华路段" and self.comboBox_4.currentText() == "全部" and self.comboBox_5.currentText() == "全部":
                for i in self.get_exceldata():
                    self.pay = i[7]
                    starttime = i[5]
                    endtime = i[6]
                    sumpay = self.postdata(starttime, endtime)
                    sumpay = sumpay / 100
                    print("案例编号:" + f"{i[0]}")
                    print("入场时间:" + f"{i[5]}")
                    print("离场时间:" + f"{i[6]}")
                    print("理论值:" + f"{self.pay}", "实际计算值:" + f"{sumpay}")
                    if sumpay == self.pay:
                        print("测试结果:通过!")
                        self.m=self.m+1
                        self.testresult="通过"

                    else:
                        print("测试结果:失败!")
                        self.n = self.n + 1
                        print(self.n)
                        self.testresult = "失败"

                    Area = "测试地区"
                    RoadType = "路段类型"
                    CaseNo = "案例编号"
                    EntryTimes = "入场时间"
                    leaveTimes = "离场时间"
                    ExcepetValue = "理论值"
                    ActualValue = "实际计算值"
                    Testresult = "测试结果"
                    CarAttribute = "车辆属性"
                    CarType = "车辆类型"
                    # csv header
                    fieldnames = [Area, RoadType, CarAttribute, CarType, CaseNo, EntryTimes, leaveTimes, ExcepetValue,
                                  ActualValue, Testresult]
                    # csv data
                    mydict = [
                        {CaseNo: i[0], Area: i[1], RoadType: i[2], CarAttribute: i[3], CarType: i[4] ,EntryTimes: i[5],
                         leaveTimes: i[6], ExcepetValue: i[7], ActualValue: sumpay,
                         Testresult: self.testresult}]
                    with open('测试明细.csv', 'a+', encoding='UTF8', newline='') as f:
                        writer = csv.DictWriter(f, fieldnames=fieldnames)
                        if self.b == 0:
                            writer.writeheader()
                            self.b = self.b + 1
                        writer.writerows(mydict)
            #按钮都选择全部时要特殊处理
            elif self.comboBox_2.currentText() == "全部" and self.comboBox_3.currentText() == "全部" and self.comboBox_4.currentText() == "全部" and self.comboBox_5.currentText() == "全部":
                self.wudi = 1
                for i in self.get_exceldata():
                    self.pay = i[7]
                    starttime = i[5]
                    endtime = i[6]
                    sumpay = self.postdata2(starttime, endtime)
                    sumpay = sumpay / 100
                    print("案例编号:" + f"{i[0]}")
                    print("入场时间:" + f"{i[5]}")
                    print("离场时间:" + f"{i[6]}")
                    print("理论值:" + f"{self.pay}", "实际计算值:" + f"{sumpay}")
                    if sumpay == self.pay:
                        print("测试结果:通过!")
                        self.m=self.m+1
                        self.testresult="通过"

                    else:
                        print("测试结果:失败!")
                        self.n = self.n + 1
                        print(self.n)
                        self.testresult = "失败"

                    Area = "测试地区"
                    RoadType = "路段类型"
                    CaseNo = "案例编号"
                    EntryTimes = "入场时间"
                    leaveTimes = "离场时间"
                    ExcepetValue = "理论值"
                    ActualValue = "实际计算值"
                    Testresult = "测试结果"
                    CarAttribute = "车辆属性"
                    CarType = "车辆类型"
                    # csv header
                    fieldnames = [Area, RoadType, CarAttribute, CarType, CaseNo, EntryTimes, leaveTimes, ExcepetValue,
                                  ActualValue, Testresult]
                    # csv data
                    mydict = [
                        {CaseNo: i[0], Area: i[1], RoadType: i[2], CarAttribute: i[3], CarType: i[4], EntryTimes: i[5],
                         leaveTimes: i[6], ExcepetValue: i[7], ActualValue: sumpay,
                         Testresult: self.testresult}]
                    with open('测试明细.csv', 'a+', encoding='UTF8', newline='') as f:
                        writer = csv.DictWriter(f, fieldnames=fieldnames)
                        if self.b == 0:
                            writer.writeheader()
                            self.b = self.b + 1
                        writer.writerows(mydict)

            print("测试结果汇总报告:"+"测试通过:"f"{self.m}"+"条案例"+","+"测试失败:"f"{self.n}"+"条案例")
            Area="测试地区"
            RoadType="路段类型"
            CarType="车辆类型"
            CarAttributes="车辆属性"
            TestPasses="测试通过数"
            Testfails="测试失败数"
            # csv header
            fieldnames = [Area, RoadType, CarType, CarAttributes,TestPasses,Testfails]
            # csv data
            mydict = [{Area:self.comboBox_2.currentText(), RoadType:self.comboBox_3.currentText() , CarType:self.comboBox_4.currentText(),CarAttributes:self.comboBox_5.currentText(),TestPasses:self.m,Testfails:self.n}]
            with open('测试报告.csv', 'w', encoding='UTF8', newline='') as f:
                writer = csv.DictWriter(f, fieldnames=fieldnames)
                writer.writeheader()
                writer.writerows(mydict)
        except Exception as e:
            print(e)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mc = MyClass()
    sys.exit(app.exec_())

jifei3.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'jifei3.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# 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, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(781, 409)
        self.widget = QtWidgets.QWidget(Form)
        self.widget.setGeometry(QtCore.QRect(66, 50, 675, 270))
        self.widget.setObjectName("widget")
        self.gridLayout = QtWidgets.QGridLayout(self.widget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.label_5 = QtWidgets.QLabel(self.widget)
        self.label_5.setObjectName("label_5")
        self.gridLayout.addWidget(self.label_5, 0, 0, 1, 1)
        self.comboBox_2 = QtWidgets.QComboBox(self.widget)
        self.comboBox_2.setEditable(True)
        self.comboBox_2.setDuplicatesEnabled(False)
        self.comboBox_2.setObjectName("comboBox_2")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.gridLayout.addWidget(self.comboBox_2, 0, 1, 1, 1)
        self.label_6 = QtWidgets.QLabel(self.widget)
        self.label_6.setObjectName("label_6")
        self.gridLayout.addWidget(self.label_6, 0, 2, 1, 1)
        self.comboBox_3 = QtWidgets.QComboBox(self.widget)
        self.comboBox_3.setEditable(True)
        self.comboBox_3.setDuplicatesEnabled(False)
        self.comboBox_3.setObjectName("comboBox_3")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.gridLayout.addWidget(self.comboBox_3, 0, 3, 1, 1)
        self.label_7 = QtWidgets.QLabel(self.widget)
        self.label_7.setObjectName("label_7")
        self.gridLayout.addWidget(self.label_7, 0, 4, 1, 1)
        self.comboBox_4 = QtWidgets.QComboBox(self.widget)
        self.comboBox_4.setEditable(True)
        self.comboBox_4.setDuplicatesEnabled(False)
        self.comboBox_4.setObjectName("comboBox_4")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.gridLayout.addWidget(self.comboBox_4, 0, 5, 1, 1)
        self.label_9 = QtWidgets.QLabel(self.widget)
        self.label_9.setObjectName("label_9")
        self.gridLayout.addWidget(self.label_9, 0, 6, 1, 1)
        self.comboBox_5 = QtWidgets.QComboBox(self.widget)
        self.comboBox_5.setEditable(True)
        self.comboBox_5.setDuplicatesEnabled(False)
        self.comboBox_5.setObjectName("comboBox_5")
        self.comboBox_5.addItem("")
        self.comboBox_5.addItem("")
        self.comboBox_5.addItem("")
        self.gridLayout.addWidget(self.comboBox_5, 0, 7, 1, 1)
        self.label = QtWidgets.QLabel(self.widget)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 8, 1, 1)
        self.comboBox = QtWidgets.QComboBox(self.widget)
        self.comboBox.setEditable(True)
        self.comboBox.setDuplicatesEnabled(False)
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.gridLayout.addWidget(self.comboBox, 0, 9, 1, 1)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 0, 10, 1, 1)
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 1, 0, 1, 2)
        self.lineEdit_4 = QtWidgets.QLineEdit(self.widget)
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.gridLayout.addWidget(self.lineEdit_4, 1, 2, 1, 5)
        self.label_8 = QtWidgets.QLabel(self.widget)
        self.label_8.setObjectName("label_8")
        self.gridLayout.addWidget(self.label_8, 2, 0, 1, 2)
        self.textBrowser = QtWidgets.QTextBrowser(self.widget)
        self.textBrowser.setObjectName("textBrowser")
        self.gridLayout.addWidget(self.textBrowser, 3, 0, 1, 11)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label_5.setText(_translate("Form", "地区"))
        self.comboBox_2.setCurrentText(_translate("Form", "全部"))
        self.comboBox_2.setItemText(0, _translate("Form", "全部"))
        self.comboBox_2.setItemText(1, _translate("Form", "大沥"))
        self.comboBox_2.setItemText(2, _translate("Form", "永安"))
        self.label_6.setText(_translate("Form", "区域类型"))
        self.comboBox_3.setCurrentText(_translate("Form", "全部"))
        self.comboBox_3.setItemText(0, _translate("Form", "全部"))
        self.comboBox_3.setItemText(1, _translate("Form", "一类区域"))
        self.comboBox_3.setItemText(2, _translate("Form", "二类区域"))
        self.comboBox_3.setItemText(3, _translate("Form", "三类区域"))
        self.comboBox_3.setItemText(4, _translate("Form", "一般路段"))
        self.comboBox_3.setItemText(5, _translate("Form", "繁华路段"))
        self.label_7.setText(_translate("Form", "车辆类型"))
        self.comboBox_4.setCurrentText(_translate("Form", "全部"))
        self.comboBox_4.setItemText(0, _translate("Form", "全部"))
        self.comboBox_4.setItemText(1, _translate("Form", "小型车"))
        self.comboBox_4.setItemText(2, _translate("Form", "中型车"))
        self.comboBox_4.setItemText(3, _translate("Form", "大型车"))
        self.label_9.setText(_translate("Form", "车辆属性"))
        self.comboBox_5.setCurrentText(_translate("Form", "全部"))
        self.comboBox_5.setItemText(0, _translate("Form", "全部"))
        self.comboBox_5.setItemText(1, _translate("Form", "燃油车"))
        self.comboBox_5.setItemText(2, _translate("Form", "新能源"))
        self.label.setText(_translate("Form", "运行环境"))
        self.comboBox.setCurrentText(_translate("Form", "测试环境"))
        self.comboBox.setItemText(0, _translate("Form", "测试环境"))
        self.comboBox.setItemText(1, _translate("Form", "正式环境"))
        self.pushButton_2.setText(_translate("Form", "开始测试"))
        self.pushButton.setText(_translate("Form", "导入excel"))
        self.lineEdit_4.setText(_translate("Form", "C:/Users/Administrator/Desktop/jifei.xls"))
        self.label_8.setText(_translate("Form", "测试结果"))

Python实战:用代码模拟城市出租车计费系统(附完整代码) 本文通过一个完整的Python实战项目,详细讲解了如何用代码模拟城市出租车计费系统。文章从理解计费规则、设计核心逻辑入手,逐步实现了基础版和面向对象的增强版代码,并探讨了测试、多城市规则扩展及GUI界面开发,是Python初学者巩固基础语法、学习项目构建思维的绝佳案例。 阅读详情

相关推荐

python趣味编程-使用 Tkinter 的简单计费系统

该应用程序是一种用户友好的应用程序,可以轻松满足您的需求。商品的价格已预先编码在脚本中,您所需要做的就是在报名表中输入每件商品的数量。该项目包含使用 tkinter 库为应用程序显示令人惊叹的视觉效果的基本功能。首先,您需要下载并安装 Python IDLE,链接为“https://www.python.org/downloads/”。该项目是在一个简单的用户友好界面 Web 应用程序中设计的,以便您轻松修改 .是一个简单的项目,可以自动计算客户订购的商品总数。我希望这个项目能够帮助您找到您想要的东西。

xiaoshun007的专栏 449

项目实战:如何使用GUI编程制作一个计费工具

实现效果: import pymysql import sys from roside_order_test import datatest from PyQt5 import QtCore, QtWidgets from PyQt5.QtWidgets import * import requests,json,urllib3 class MyClass(QWidget, datatest.Ui_Form): def __init__(self): super().__init

michaelbin2012的博客 358

python趣味编程-在 Python 中使用 Tkinter 的餐厅计费系统及其源代码

该系统是一个用户友好的应用程序,可以轻松适应您的需求。该系统提供了一种有效的方法来管理餐厅的账单信息。用户可以手动输入订单,点击“总计”按钮,即可生成所订购产品的总成本。是一个用Python编程语言编码的系统。该项目利用 Tkinter 库在令人惊叹的 GUI 中展示系统。然后通过 python IDLE 或任何支持 python 语言的 IDE 打开该文件。使用 Python 中的 Tkinter 的餐厅计费系统。使用 Python 中的 Tkinter 的餐厅计费系统。编程语言开发系统的新学习技术。

xiaoshun007的专栏 217

Java语言中所有常用术语解释大全

 AAA 认证(Authentication):验证用户的身份与可使用的网络服务;授权(Authorization):依据认证结果开放网络服务给用户;计帐(Accounting):记 录用户对各种网络服务的用量,并提供给计费系统。简称AAA系统。 AWT Abstract Window Toolkit(抽象窗口工具包),第一代的 Java GUI工具包,现在基本已经不使用其中的组件,已经被Swin

java_sy的专栏 1228

开源Claude Code GUI 工具

Claudia是一款将命令行工具Claude Code转化为图形界面的热门开发工具(GitHub 3k star),基于Tauri 2构建。它解决了CLI不适、会话管理困难等问题,提供可视化项目浏览、使用分析仪表板、MCP服务器管理和创新的智能体系统(可定制专业AI助手)。当前安装需技术基础(需Rust/Bun),存在构建挑战,但开发模式可运行。智能体功能尤为亮眼,支持代码审查、文档生成等专业场景。该工具有望成为团队协作的AI编程平台,但需优化安装流程。

独立开发,substack顶级编辑 1403

VB编程实现的机房计费管理系统

VB是一种面向对象的编程语言,它简化了图形用户界面(GUI)的设计,允许开发者通过拖放控件来构建应用程序。自1991年首次发布以来,VB经历了多个版本的迭代,并与Microsoft Visual Studio集成开发环境(IDE)紧密集成。

weixin_28949937的博客 797

Java常用术语解释

java常用术语解释 这里都是我从网上和书中收集而来的一些java术语,可能不是很全,但会不断完善,如果你知道一些术语,而我没收录的,请留言。我会补上去的。   名词 解释 aaa 认证(authentication):验证用户的身份与可使用的网络服务;授权(authorization):依据认证结果开放网络服务给用户;计帐(accounting):记 录用户对各种网络服务的用量,并提

javazhuanzai的专栏 535

MATLAB车牌识别与自动计费系统设计

MATLAB是一种高性能的数值计算环境和编程语言,广泛应用于工程计算、数据分析、算法开发等领域。MATLAB以其强大的矩阵运算能力和丰富的函数库,成为工程师和科研人员首选的计算工具之一。MATLAB提供了一系列的工具箱(Toolbox),这些工具箱针对特定的工程领域或应用问题提供了高级函数和应用程序接口(API),极大地简化了用户的开发流程。例如,图像处理工具箱提供了图像预处理、增强、分析等功能,而通信工具箱则提供了信号处理和通信系统设计的能力。

weixin_35294091的博客 676

软件应用,麻将馆棋牌室计时计费管理系统软件,在计时的时候可以使用灯控器智能控灯

以下软件操作教程以佳易王棋牌计时计费软件V18.0为例说明,其他版本可以参考件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载1、软件分为非灯控版和灯控版,区别是如果是灯控版,在点击开始计时的时候,灯自动打开,结账后灯自动关闭,(相对应的桌子的灯),如果使用灯控需要配套的灯控器,使用usb转串口连接先和电脑连接。2、软件部分功能,计时+计费(结束计时自动计算费用)+商品管理(可以绑定桌子最后一起结算)+会员管理(会员可以直接使用手.机.号,不需实体卡片)+灯控(可选项)

编程实战 1582

基于Python与百度AI的智能停车场车牌识别计费系统实战项目

回过头看,这个系统并不复杂,但它解决了真实世界的痛点:效率、准确性、公平性、可扩展性。而Python,就像一位全能选手,把图像处理、AI推理、数据库、网络通信、UI交互统统串联起来。它不一定最快,但一定最高效地帮你把想法变成现实。“真正的技术高手,不是会多少种语言,而是知道在哪用哪种工具最合适。” —— 某不愿透露姓名的架构师 😎所以,下次当你走进一个智能停车场,看到那块闪着绿灯的屏幕时,不妨微微一笑:我知道背后是谁在默默工作。🤖💡本文还有配套的精品资源,点击获取。

weixin_35390379的博客 926

基于Python的智能停车场车牌识别与自动计费系统实战项目

通用模型在特殊字体、低光照场景下容易翻车。怎么办?自己训一个!步骤概览:收集 200+ 张真实或合成车牌图;用标注每个字符位置;生成.box文件;使用训练 LSTM 模型;输出,替换默认包。实测效果:准确率从 76% →93%+,尤其改善“川”、“鄂”、“赣”等易混淆汉字的识别。回过头看,这个系统涵盖了:图像采集 → 预处理 → 车牌定位 → 字符分割 → OCR识别;

weixin_29903713的博客 645

java课程设计会员卡计费系统

这是我上学期的java课程设计,因为这学期没有课程设计,就想着把我上学期做的分享出来造福一下选到这个课程设计题目的同学!本会员卡计费系统由JAVA的原生JDK中自带的的GUI库界面+jdbc连接mysql数据库完成。

hasa1024的博客 1796

不只是驱动:拆解AIC8800 WiFi模组在RK Android系统的完整启动链(从DTS到HAL)

本文深入解析了AIC8800 WiFi模组在RK Android系统中的完整启动链,从设备树(DTS)配置到HAL层适配,涵盖驱动移植、固件加载及用户空间服务协同等关键环节。通过详细的技术分析和调试技巧,帮助开发者解决RK平台与AIC8800模组的兼容性问题,优化WiFi子系统性能。

weixin_30439067的博客 492

FaceFusion支持API调用计费系统吗?适用于SaaS服务

本文探讨如何将开源人脸交换工具FaceFusion改造为支持API计费的SaaS服务,涵盖身份认证、用量计量、多维度计费模型和系统架构设计,提供可落地的技术方案与工程最佳实践,助力构建可运营的AI视觉云平台。

weixin_26854475的博客 849

python-pptx库中文文档及使用样例

个人使用样例及部分翻译自官方文档,并详细介绍chart的使用

4万+

GPU计算板卡设计原理图:735-基于3U VPX的AGX Xavier GPU计算主板

基于3U VPX的 Jetson AGX Xavier GPU计算主板是LINUX环境下软件开发等理想工具。是用于视频处理,相机信号,支持PCIE、USB、RS422、RS232、网口、SPI、I2C等综合性的信号计算主板。3. 支持外接HDMI连接显示器,并支持键盘,鼠标等外接设备进行调试。8 核 ARM v8.2 64 位 CPU、8 MB L2 + 4 MB L3。4路Gigabit Ethernet (10/100/100)link。1路RS232,1路RS485。1路 NVMe PCIeX4。

980

java电信计费项目论文_基于JAVA开发的电信IP计费系统设计毕业论文

基于JAVA开发的电信IP计费系统设计毕业论文 本科毕业设计(论文)基于 JAVA 开发的电信 IP 计费系统毕业设计(论文)任务书学院:信息科学与工程学院 系级教学单位:电子与通信工程学号学生姓名专 业班 级题目名称 基于 JAVA 开发的电信 IP 计费系统题目性质1.理工类:工程设计 ( );工程技术实验研究型( );理论研究型( );计算机软件型( √ );综合型( )2.管理类( );3...

weixin_34457571的博客 349

浙政钉(专有钉钉)门户免登(超详细)

钉钉家族 介绍浙政钉门户免登之前,首先搞清楚几个软件的关系,软件分别是:钉钉,专有钉钉,浙政钉 钉钉 是阿里巴巴集团专为中小企业打造的沟通和协同的多端平台。 专有钉钉 原名 政务钉钉,有更开放的设计能力、集成能力、更结构化协同产品、更定制化开发平台。支持专有化部署,数据落本地,更安全、客户可对该产品持牌运营、结构化编排,协助构建本地应用中心、提供移动应用全面安全保障体系。 浙政钉 为规范浙政钉整体架构体系,按照统分结合原则,由省政府办公厅统一设计整体工作界面和系统框架,统筹指导全省统建应用建设,各单

一缕南风的博客 2万+

前端开发者必看!2026年AI编程工具全攻略:Token计费、选型对比、文档解析与高效开发指南

前端开发者必看!2026年AI编程工具全攻略:Token计费、选型对比、文档解析与高效开发指南

为写出赏心悦目、容易维护的代码而探索 997

ESP32脑机接口开发板:EEG信号采集与应用开发指南

脑机接口(BCI)技术通过采集脑电图(EEG)信号实现人机交互,其核心在于高精度生物电信号采集与实时处理。基于ESP32微控制器的开发平台结合专业级ADS1299 ADC芯片,可构建8通道EEG信号采集系统,支持250SPS采样率与可编程增益。这种嵌入式解决方案在科研教育领域具有显著优势,既能满足信号质量要求,又大幅降低开发门槛。典型应用包括实时脑电波可视化、注意力检测等BCI场景,通过Python生态工具链(如BrainFlow、LSL)可快速实现数据处理。开发时需注意电极阻抗控制(<10kΩ)和50/6

weixin_42518874的博客 343

DeepFashion 服装识别:基于 YOLOv10 的深度学习实现与 UI 界面开发

随着深度学习的发展,目标检测算法在服装识别任务中表现出色,特别是 YOLO(You Only Look Once)系列模型。服装识别(Fashion Recognition)是计算机视觉领域的重要任务,广泛应用于。已提供,可用于服装分类、款式识别、虚拟试衣等应用。训练服装识别模型,并开发。

YOLO 803

java电信计费项目论文_毕业论文-基于JAVA开发的电信IP计费系统3.doc

您所在位置:网站首页 > 海量文档&nbsp>&nbsp计算机&nbsp>&nbspJava毕业论文-基于JAVA开发的电信IP计费系统3.doc59页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该...

weixin_31851979的博客 368

华为OD机试 - 末世分配资源包 - 二分查找 + 贪心(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。末世时代,政府为各地方配资源,现有资源分配表 nums[n],要求按如下规则分配给 k 个营地:在最优平均分配情况下,得到最大团队所获得的资源数4,3,6,9,7 216最佳划分之一:[4,3,6] -> 13 [9,7] -> 16最大

学Java,找哪吒 223

Python-GUI-Project实用工具合集:词典查询、名字生成器与URL短链器全解析

Python-GUI-Project 是一个包含 20 多个 Python GUI 项目的合集仓库,全部基于轻量级的 Tkinter 框架构建。本文挑出其中最实用的三款小工具——词典查询、名字生成器、URL短链器,逐一完整解析,新手跟着做,3 分钟即可上手。 ## 📚 Python词典查询应用:即时查看单词释义 词典工具的源码位于 [dictionary.py](https://link.g

gitblog_00493的博客 878

QT Android开发之Android端usb调试模式设置与问题解决

QT Android开发之Android端usb调试模式设置与问题解决 一.QT android开发android端usb调试模式设置 QT android开发环境搭建完成后,android设备需要打开usb调试模式才能正常连接,下面以小米ipad为例进行设置(其他手机和ipad设置方法类似) 二.小米ipad打开usb调试模式 1.设置----我的设备-----全部参数信息-----OS版本---点击这里6次以上就进入开发者模式。

热土程序园,利他愉己~ 1129

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: pyqt打包命令
下一篇: 提高测试人员测试效率之GUI工具
michaelbin2012
博客等级 码龄14年 21粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值