赣南科技学院电费查询(基于完美校园)

由于赣南科技学院的电费数据库和江理(本部),红旗校区共用,所以本次电费查询是基于完美校园的数据库,话不多说看代码,下面代码是ui版(QT)

# 任务后续,引入多线程,接入云服务器
# copyright-DJJ   2023-07-05 15:39
# 目前已完成欢迎界面,查询主界面,日志访问界面,充值界面
# 目前管理员密码无法实现本地化存储,每次更新密码都只在本次运行程序有效,后续将引入数据库连接,实现本地化存储
import sys
import os
import time
from os import system
import requests
import logging
from PyQt5.QtGui import QIcon, QPixmap
from bs4 import BeautifulSoup
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QScrollArea, \
    QRadioButton, QLineEdit, QDialog

# class Find():  #搜寻电费记录
#     def __init__(self):
#         super().__init__()
#         path_r = r"E:\pycharm所有文件\dist\qtsigner\test1\日志.log"
#         with open(path_r, "r", encoding='utf-8') as f:  # 打开文件
#             self.data = f.read()  # 读取文件
#
#
#
#     def find(self,room,time):  # 查找函数
#
#         self.room=room
#         print(self.room)
#         self.i = -1  # 用来记录本次循环数据所在位置
#         self.I = -1
#
#         self.s = 0  # 初始化索引,将获得的所有电费记录放入数组
#         self.S = 0
#
#         self.j = self.data.rfind(self.room)  # 找到最后一条数据所在的位置
#
#         while self.i < self.j:
#
#             start = self.i + 1  # 每次查找都要从上一条数据之后的位置开始,默认从0开始
#
#             self.i = self.data.index(self.room, start)  # 从start开始查找,返回所要查询寝室号第一次出现的位置
#
#             if (self.i != start - 1):
#                 self.s += 1  # 获得有效的电费记录,数量
#
#         self.arr = [0] * self.s  # 定义记录电费数组长度
#         self.arrtime=[0] *self.s # 定义记录电费时间数组长度
#
#         while self.I < self.j:
#             start = self.I + 1  # 每次查找都要从上一条数据之后的位置开始,默认从0开始
#
#             self.I = self.data.index(self.room, start)  # 从start开始查找,返回所要查询寝室号第一次出现的位置
#             result = self. data[self.I:self.I+37]
#
#             num = result.split("  ")  # 切割
#             etc = num[0]  # 获得切割部分的电费部分
#
#             num1=etc.split("剩余电量")
#             num2=num1[1]
#
#             num3=num2.split(" ")
#             a=num3[0]
#
#             etctime=num[1]   #分割时间
#             etctime1=etctime.split(" ")
#             etctime2=etctime1[0]
#
#             self.arr[self.S] = a
#             self.arrtime[self.S]=etctime2
#             self.S += 1
#             if (self.S >= 6):  # 数组下标不能超过9
#                 return
#
#         self.time=time
#         t = int(self.time)
#         print(t)
#         sum = float(float(self.arr[len(self.arr) - t]) - float(self.arr[len(self.arr) - 1]))
#
#         a = self.arrtime[len(self.arrtime) - t]
#         b = self.arrtime[len(self.arrtime) - 1]
#
#         a1 = a.split("/")
#         ay = int(a1[0])
#         am = int(a1[1])
#         ad = int(a1[2])
#
#         a2 = b.split("/")
#         ay2 = int(a2[0])
#         am2 = int(a2[1])
#         ad2 = int(a2[2])
#
#         y = ay2 - ay
#         m = am2 - am
#         d = ad2 - ad
#
#         sumd = y * 365 + m * 30 + d
#
#         print((str)(sumd) + "天" + '平均使用了' + str(sum / sumd) + "度")
#


class inmywidget(QWidget):
    def __init__(self):
        super().__init__()

        self.initui()

    def initui(self):

        self.resize(500,500)
        container = QVBoxLayout()  # 创建整体布局器
        # 实时检测信息
        self.msg = QLabel("")

        self.msg.resize(500, 15)
        self.msg.setWordWrap(True)  # 自动换行
        room_layout = QHBoxLayout()
        edit1 = QLabel("寝室号:")

        room_layout.addWidget(edit1)

        self.edit2 = QLineEdit('',self)

        self.edit2.setPlaceholderText("例如应科院1#111")

        room_layout1=QHBoxLayout()
        edit2=QLabel('输入最近几次的电费使用情况:')
        room_layout1.addWidget(edit2)
        self.edit=QLineEdit('',self)

        room_layout1.addWidget(self.edit)
        room_layout.addWidget(self.edit2)

        # 创建一个滚动对象
        scroll = QScrollArea()

        scroll.setWidget(self.msg)

        # 创建垂直布局器,用来添加自动滚动条
        v_layout = QVBoxLayout()
        v_layout.addWidget(scroll)

        # 创建水平布局器
        h_layout = QHBoxLayout()

        btn = QPushButton("查询", self)
        btn.clicked.connect(self.f)
        h_layout.addWidget(btn)
        container.addLayout(room_layout)
        container.addLayout(room_layout1)
        container.addLayout(v_layout)
        container.addLayout(h_layout)
        self.setLayout(container)

    def f(self):

        path_r = r"E:\pycharm所有文件\dist\qtsigner\test1\日志.log"
        with open(path_r, "r", encoding='utf-8') as f:  # 打开文件
            self.data = f.read()  # 读取文件

        self.room = self.edit2.text()

        self.i = -1  # 用来记录本次循环数据所在位置
        self.I = -1

        self.s = 0  # 初始化索引,将获得的所有电费记录放入数组
        self.S = 0

        self.j = self.data.rfind(self.room)  # 找到最后一条数据所在的位置

        while self.i < self.j:

            start = self.i + 1  # 每次查找都要从上一条数据之后的位置开始,默认从0开始

            self.i = self.data.index(self.room, start)  # 从start开始查找,返回所要查询寝室号第一次出现的位置

            if (self.i != start - 1):
                self.s += 1  # 获得有效的电费记录,数量

        self.arr = [0] * self.s  # 定义记录电费数组长度
        self.arrtime = [0] * self.s  # 定义记录电费时间数组长度

        while self.I < self.j:
            start = self.I + 1  # 每次查找都要从上一条数据之后的位置开始,默认从0开始

            self.I = self.data.index(self.room, start)  # 从start开始查找,返回所要查询寝室号第一次出现的位置
            result = self.data[self.I:self.I + 37]

            num = result.split("  ")  # 切割
            etc = num[0]  # 获得切割部分的电费部分

            num1 = etc.split("剩余电量")
            num2 = num1[1]

            num3 = num2.split(" ")
            a = num3[0]

            etctime = num[1]  # 分割时间
            etctime1 = etctime.split(" ")
            etctime2 = etctime1[0]

            self.arr[self.S] = a
            self.arrtime[self.S] = etctime2
            self.S += 1

            if (self.S >= 6):      # 数组下标不能超过9
                break




        self.t = int(self.edit.text())

        self.sum = float(float(self.arr[len(self.arr) - self.t]) - float(self.arr[len(self.arr) - 1]))

        self.a = self.arrtime[len(self.arrtime) - self.t]
        self.b = self.arrtime[len(self.arrtime) - 1]

        self.a1 =self. a.split("/")
        self.ay = int(self.a1[0])
        self.am = int(self.a1[1])
        self.ad = int(self.a1[2])

        self.a2 = self.b.split("/")
        self. ay2 = int(self.a2[0])
        self.am2 = int(self.a2[1])
        self.ad2 = int(self.a2[2])

        self.y = self.ay2 - self.ay
        self.m = self.am2 - self.am
        self.d = self.d2 - self.ad

        self.sumd = self.y * 365 + m * 30 + self.d

        infoamtion = ((str)(self.sumd) + "天" + '平均使用了' + str(self.sum / self.sumd) + "度")

        self.msg_history.append(infoamtion)
        self.msg.setText("<br>".join(self.msg_history))
        self.msg.resize(440, self.msg.frameSize().height() + 10)
        self.msg.repaint()  # 更新内容,如果不更新可能不显示内容


class Example (QWidget):  #二维码图片
    def __init__(self):
        super ().__init__()
        self.initUI ()

    def initUI(self):
        hbox=QHBoxLayout()
        lbl = QLabel(self)
        pixmap = QPixmap('微信图片_20230712172925(1)(1).jpg')  # 按指定路径找到图片
        lbl.setPixmap (pixmap)  # 在label上显示图片
        lbl.setScaledContents (True)  # 让图片自适应label大小
        hbox.addWidget(lbl)

        self.setLayout(hbox)
        self.move (300, 200)
        self.setWindowTitle ('pic')
        self.show ()


class Chongqian(QWidget):   #充值界面

    def __init__(self):
        super().__init__()
        self.ui()

    def ui(self):
        self.setWindowTitle('充值')
        self.resize(500, 300)
        container = QVBoxLayout()
        layout = QHBoxLayout()
        label = QLabel('充值金额')
        lineedit = QLineEdit()
        layout.addStretch(1)
        layout.addWidget(label)
        layout.addWidget(lineedit)
        layout.addStretch(1)

        layout1 = QHBoxLayout()
        btn = QPushButton('充值')
        btn.clicked.connect(self.EWM)
        layout1.addStretch(1)
        layout1.addWidget(btn)
        layout1.addStretch(1)

        container.addStretch(1)
        container.addLayout(layout)
        container.addLayout(layout1)
        container.addStretch(1)
        self.setLayout(container)
    def EWM(self):
        self.w=Example()
        self.w.show()



class Success(QDialog):  # 重置密码成功界面
    def __init__(self):
        super().__init__()
        self.ui()

    def ui(self):
        self.resize(300, 200)
        container = QVBoxLayout()
        layout = QHBoxLayout()
        label = QLabel('重置成功')
        layout.addStretch(1)
        layout.addWidget(label)
        layout.addStretch(1)

        container.addStretch(1)
        container.addLayout(layout)
        container.addStretch(1)

        self.setLayout(container)


class welcome(QWidget):  # 欢迎界面
    def __init__(self):
        super().__init__()
        self.ui()

    def ui(self):
        self.setWindowTitle('欢迎')
        self.setWindowIcon(QIcon("D:\江理图标.png"))
        self.resize(300, 200)
        container = QVBoxLayout()
        layout = QHBoxLayout()
        label = QLabel('欢迎进入电费查询系统')
        layout.addStretch(1)
        layout.addWidget(label)
        layout.addStretch(1)

        layout1 = QHBoxLayout()
        btn = QPushButton('进入')
        btn.clicked.connect(self.jinru)

        layout1.addStretch(1)
        layout1.addWidget(btn)
        layout1.addStretch(1)

        container.addStretch(1)
        container.addLayout(layout)

        container.addStretch(1)
        container.addLayout(layout1)

        self.setLayout(container)

    def jinru(self):
        self.w = Mywidget()
        self.w.show()


class window1(QWidget):  # 重置管理员密码的界面
    def __init__(self):
        super().__init__()
        self.Changepwd=window()
        self.w = None
        self.ui()

    def ui(self):
        self.resize(800, 500)
        self.setWindowTitle('重置密码')
        container = QVBoxLayout()
        layout = QHBoxLayout()
        label = QLabel('你正在重置密码')
        layout.addStretch(1)
        layout.addWidget(label)
        layout.addStretch(1)

        layout1 = QHBoxLayout()
        label1 = QLabel('请输入新密码:')
        self.lineedit = QLineEdit()
        self.lineedit.setEchoMode(QLineEdit.Password)  # 掩码
        self.lineedit.setMaxLength(4)
        self.Changepwd.opwd=self.lineedit.text()  #修改管理员密码
        layout1.addStretch(1)
        layout1.addWidget(label1)
        layout1.addWidget(self.lineedit)
        layout1.addStretch(1)

        layout2 = QHBoxLayout()
        btn = QPushButton('确认')
        btn.clicked.connect(self.log_mm)
        layout2.addStretch(1)
        layout2.addWidget(btn)
        layout2.addStretch(1)

        container.addLayout(layout)
        container.addStretch(1)
        container.addLayout(layout1)
        container.addStretch(1)
        container.addLayout(layout2)

        self.setLayout(container)

    def log(self):  # 写入日志时间
        self.format = '  ' + "%(asctime)s           %(message)s"

        self.date_format = "%Y/%m/%d %H:%M:%S %p"  # 日期格式
        logging.basicConfig(
            filename='密码.log',  # 声明创建的日志文件
            level=logging.DEBUG,  # 声明初始化等级
            format=self.format,
            datefmt=self.date_format)
        self.Gmm = self.lineedit.text()  # 获取输入的新密码
        self.Gmmbin = bin(int(self.Gmm))  # 将新密码转换为二进制

    def log_mm(self):  # 创建密码日志,用于记录管理员密码的更改
        self.log()
        logging.debug(self.Gmmbin)
        self.a = window1()
        self.a.close()
        self.w = Success()
        self.w.show()


class window2(QDialog):  # 密码错误的界面

    def __init__(self):
        super().__init__()
        self.ui()

    def ui(self):
        self.resize(300, 200)
        container = QVBoxLayout()
        layout = QHBoxLayout()
        label = QLabel('密码错误!!!')
        layout.addStretch(1)
        layout.addWidget(label)
        layout.addStretch(1)

        container.addStretch(1)
        container.addLayout(layout)
        container.addStretch(1)
        self.setLayout(container)


class window(QWidget):  # 访问日志布局
    def __init__(self):
        super().__init__()
        self.w = None
        self.opwd="1111"  #初始密码
        self.ui()

    def ui(self):
        self.setWindowTitle('日志访问')
        self.resize(500, 300)
        container = QVBoxLayout()

        h_layout = QHBoxLayout()
        label = QLabel('你正在访问系统日志,请输入管理员密码!!!')
        h_layout.addStretch(2)
        h_layout.addWidget(label)
        h_layout.addStretch(1)

        h1_layout = QHBoxLayout()
        label1 = QLabel('password')
        self.edit = QLineEdit()
        self.edit.setPlaceholderText('enter a word')
        self.edit.setEchoMode(QLineEdit.Password)  # 掩码

        h1_layout.addWidget(label1)
        h1_layout.addWidget(self.edit)

        h2_layout = QHBoxLayout()
        btn1 = QPushButton('忘记或重置管理员密码')
        btn1.clicked.connect(self.Chongzhi)
        btn = QPushButton('访问')
        btn.clicked.connect(self.log)
        h2_layout.addWidget(btn1)
        h2_layout.addStretch(1)
        h2_layout.addWidget(btn)
        h2_layout.addStretch(1)

        container.addLayout(h_layout)
        container.addLayout(h1_layout)
        container.addLayout(h2_layout)
        self.setLayout(container)

    def log(self):  # 点击访问按钮

        self.pwd = self.edit.text()

        if self.pwd ==self.opwd:
            os.system("日志.log")
        else:
            self.w = window2()
            self.w.show()

    def Chongzhi(self):  # 点击重置按钮
        self.w = window1()
        self.w.show()


class Mywidget(QWidget):

    def log(self):  # 写入日志时间
        self.format = '  ' + "%(asctime)s           %(message)s"

        self.date_format = "%Y/%m/%d %H:%M:%S %p"  # 日期格式
        logging.basicConfig(
            filename='日志.log',  # 声明创建的日志文件
            level=logging.DEBUG,  # 声明初始化等级
            format=self.format,
            datefmt=self.date_format)

    def __init__(self):
        super().__init__()
        self.setWindowIcon(QIcon("D:/江理图标.png"))
        self.setWindowTitle('电费查询')
        self.init_ui()
        self.msg_history = list()  # 用来存放消息

    def init_ui(self):  # 基本布局
        self.resize(800, 500)

        container = QVBoxLayout()  # 创建整体布局器

        # 实时检测信息
        self.msg = QLabel("")

        self.msg.resize(500, 15)
        self.msg.setWordWrap(True)  # 自动换行
        # self.msg.setAlignment(Qt.AlignTop)  #靠上

        layout = QVBoxLayout()  # 创建垂直布局

        school_layout = QHBoxLayout()
        edit = QLabel("校区")
        school_layout.addWidget(edit)

        self.check1 = QRadioButton("本部校区")

        school_layout.addWidget(self.check1)

        self.check2 = QRadioButton("应科院(赣科)")  # 添加复选框

        school_layout.addWidget(self.check2)

        self.check3 = QRadioButton("三江校区")
        school_layout.addWidget(self.check3)

        layout.addLayout(school_layout)

        room_layout = QHBoxLayout()
        edit1 = QLabel("寝室号:")

        room_layout.addWidget(edit1)

        self.edit2 = QLineEdit('', self)

        self.edit2.setPlaceholderText("例如1#111")

        room_layout.addWidget(self.edit2)

        # 创建一个滚动对象
        scroll = QScrollArea()

        scroll.setWidget(self.msg)

        # 创建垂直布局器,用来添加自动滚动条
        v_layout = QVBoxLayout()
        v_layout.addWidget(scroll)

        # 创建水平布局器
        h_layout = QHBoxLayout()

        btn = QPushButton("查询", self)
        btn.clicked.connect(self.ChaZhao)
        log_btn = QPushButton('日志查询')  # 日志按钮
        log_btn2=QPushButton("电费判断")
        log_btn2.clicked.connect(self.Panduan)
        log_btn1 = QPushButton('充值')
        log_btn1.clicked.connect(self.Chongqian)
        log_btn.clicked.connect(self.log_open)
        log_btn.resize(100, 100)
        h_layout.addWidget(log_btn)

        h_layout.addStretch(1)
        h_layout.addWidget(btn)
        h_layout.addWidget(log_btn2)
        h_layout.addStretch(1)
        h_layout.addWidget(log_btn1)

        container.addLayout(layout)
        container.addLayout(room_layout)
        container.addLayout(v_layout)
        container.addLayout(h_layout)

        self.setLayout(container)  # 基本布局   #

    def Panduan(self):
        self.p=inmywidget()
        self.p.show()

    def Chongqian(self):  # 充值
        self.w = Chongqian()
        self.w.show()

    def log_open(self):  # 进入日志页面
        self.w = window()
        self.w.show()

        # os.system("notepad 日志.log")

    def ChaZhao(self):  # 查询电费

        room = self.edit2.text()  # 监听输入的寝室号
        num1 = room.split('#')  # 从#分割
        num2 = int(num1[0])  # 楼栋号
        num3 = num1[1]  # 寝室号
        num4 = num1[1]
        for i in num4:
            c = i
            break
        num4 = int(c)
        self.build = num2
        self.floor = num4
        self.room = num3 + '         '
        if self.check1.isChecked():  # 判断本部是否被选中
            self.sysid = 1
            url = 'https://ecard.jxust.edu.cn/epay/wxpage/wanxiao/getbuild.json?sysid={}&areaid=1&districtid=1'.format(
                self.sysid)

            response = requests.post(url=url)
            Pillar_data = response.json()
            list_data = Pillar_data['list']

            global a, list_buiId, Floor_data, list_roomid
            a = 0
            for i in range(0, len(list_data)):
                content1 = list_data[i]
                if ('本部' + str(self.build) + '栋' == content1['buiName']):
                    a = 1
                    list_buiId = content1['buiId']  # 返回楼栋数所对应的buiId值

                # if (self.floor < 8 and self.floor > 0):  # 判断楼层是否小于8
                global Floor_data

            if list_buiId != 0:
                url = 'https://ecard.jxust.edu.cn/epay/wxpage/wanxiao/getroom.json?sysid={}&areaid=1&districtid=1&buildid={}&floorid={}'.format(
                    1, list_buiId, self.floor)

                response = requests.post(url=url)
                Floor_data = response.json()['list']

            if Floor_data != 0:

                for i in range(0, len(Floor_data)):
                    content1 = Floor_data[i]

                    if self.room == content1['roomName']:
                        list_roomid = content1['roomId']

            if list_roomid != 0:
                url = 'http://ecard.jxust.edu.cn/epay/wxpage/wanxiao/eleresult?sysid={}&roomid={}&areaid=1&buildid={}'.format(
                    self.sysid,
                    list_roomid,
                    self.build)
                headers = {
                    'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Wanxiao/5.7.0 CCBSDK/2.4.0'
                }  # pc端无效,使用手机端的标识

                response = requests.post(url=url, headers=headers, )
                page_text = response.text
                soup = BeautifulSoup(page_text, 'html.parser')
                content = soup.find('input', id='roomdef')[
                    'left-degree']  # 找到id=roomdef的input标签,并且取出left-degree所对应的属性值,返回的是str类型
                Floatmoney = float(content)  # 此时money是十位浮点类型,
                # print('电费查询结果')
                # print(room + '剩余电量' + ('{:.2f}'.format(Floatmoney)) + '度\n')  # 使用format函数保留两位小数

                self.msg_history.append("本部" + room + '剩余电量' + ('{:.2f}'.format(Floatmoney)) + '度')
                self.msg.setText("<br>".join(self.msg_history))
                self.msg.resize(440, self.msg.frameSize().height() + 15)
                self.msg.repaint()  # 更新内容,如果不更新可能不显示内容
                self.log()
                logging.debug('             ' + "本部" + room + '剩余电量' + ('{:.2f}'.format(Floatmoney)) + '度')
                # print('(1) 剩余电量的度量单位:西校区的度量单位是“元”,本部、应科院的度量单位是“度”')
                # print('(2) 充值后,由于系统数据同步的延迟性,不能及时的查看剩余电量')
                # print(
                #     '(3) 有关电控问题,请联系:本部和西校区:校本部后勤事务中心三楼307,电话8312097;应科院:黄金校区教学主楼B区负一楼008学生工作办公室,电话8312628\n')

        if self.check2.isChecked():  # 判断应科院是否被选中
            self.sysid = 2
            url = 'https://ecard.jxust.edu.cn/epay/wxpage/wanxiao/getbuild.json?sysid={}&areaid=1&districtid=1'.format(
                self.sysid)

            response = requests.post(url=url)
            Pillar_data = response.json()
            list_data = Pillar_data['list']

            global a1, list_buiId1, Floor_data1, list_roomid1
            a1 = 0
            for i in range(0, len(list_data)):
                content1 = list_data[i]
                if ('应科院' + str(self.build) + '栋' + 'new' == content1['buiName']):
                    a1 = 1
                    list_buiId1 = content1['buiId']  # 返回楼栋数所对应的buiId值

            # if (self.floor < 8 and self.floor > 0):  # 判断楼层是否小于8

            if list_buiId1 != 0:
                url = 'https://ecard.jxust.edu.cn/epay/wxpage/wanxiao/getroom.json?sysid={}&areaid=1&districtid=1&buildid={}&floorid={}'.format(
                    2, list_buiId1, self.floor)

                response = requests.post(url=url)
                Floor_data1 = response.json()['list']

            if Floor_data1 != 0:

                for i in range(0, len(Floor_data1)):
                    content1 = Floor_data1[i]
                    if self.room == content1['roomName']:
                        list_roomid1 = content1['roomId']

            if list_roomid1 != 0:
                url = 'http://ecard.jxust.edu.cn/epay/wxpage/wanxiao/eleresult?sysid={}&roomid={}&areaid=1&buildid={}'.format(
                    self.sysid,
                    list_roomid1,
                    list_buiId1)

                headers = {
                    'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Wanxiao/5.7.0 CCBSDK/2.4.0'
                }  # pc端无效,使用手机端的标识

                response = requests.post(url=url, headers=headers, )
                page_text = response.text
                soup = BeautifulSoup(page_text, 'html.parser')
                content = soup.find('input', id='roomdef')[
                    'left-degree']  # 找到id=roomdef的input标签,并且取出left-degree所对应的属性值,返回的是str类型
                Floatmoney = float(content)  # 此时money是十位浮点类型,
                # print('电费查询结果')
                # print(room + '剩余电量' + ('{:.2f}'.format(Floatmoney)) + '度\n')  # 使用format函数保留两位小数
                self.msg_history.append("应科院" + room + '剩余电量' + ('{:.2f}'.format(Floatmoney)) + '度')
                self.msg.setText("<br>".join(self.msg_history))
                self.msg.resize(440, self.msg.frameSize().height() + 30)
                self.msg.repaint()  # 更新内容,如果不更新可能不显示内容
                self.log()
                logging.debug('             ' + "应科院" + room + '剩余电量' + ('{:.2f}'.format(Floatmoney)) + '度')

        if self.check3.isChecked():  # 判断三江校区是否被选中
            self.msg_history.append('此校区暂未开放,敬请期待')
            self.msg.setText("<br>".join(self.msg_history))
            self.msg.resize(440, self.msg.frameSize().height() + 15)
            self.msg.repaint()  # 更新内容,如果不更新可能不显示内容


if __name__ == '__main__':
    app = QApplication(sys.argv)
    m = Mywidget()
    cur_path = os.path.abspath(__file__)  # 获取日志文件的绝对路径
    m.msg_history.append(cur_path)
    m.msg.setText("<br>".join(m.msg_history))
    m.msg.repaint()

    w = welcome()  # 创建welcome子类
    w.show()
    app.exec_()  # 程序进行循环等待状态
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值