From 041e3258aee3efa46b0a5ffea873662cb28fd2b0 Mon Sep 17 00:00:00 2001 From: zhangxuxutm <951937200@qq.com> Date: Wed, 31 May 2023 17:44:55 +0800 Subject: [PATCH] =?UTF-8?q?0531=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Static/Main.qss | 44 ++++++- UI/TrendManage/TrendWidget.py | 5 +- model/ClientModel/authentication.py | 152 ++++++++++++++++++++++++ model/HistoryDBModel/HistoryDBManage.py | 2 +- 4 files changed, 199 insertions(+), 4 deletions(-) create mode 100644 model/ClientModel/authentication.py diff --git a/Static/Main.qss b/Static/Main.qss index 067c956..bc6701c 100644 --- a/Static/Main.qss +++ b/Static/Main.qss @@ -664,6 +664,18 @@ QComboBox#ProTypeBox{ } +QComboBox#timeBox{ + + border: 0px; + + font: 22px "PingFangSC-Regular"; + + width: 40px; + + height: 20px; + +} + QComboBox#TcRtdTypeBox,QComboBox#ModbusTypeBox { border: 0px; @@ -678,7 +690,7 @@ QComboBox#TcRtdTypeBox,QComboBox#ModbusTypeBox { } -QComboBox#setBox::drop-down, QComboBox#ProTypeBox::drop-down,QComboBox#TcRtdTypeBox::drop-down, QComboBox#ModbusTypeBox::drop-down { +QComboBox#setBox::drop-down, QComboBox#ProTypeBox::drop-down,QComboBox#TcRtdTypeBox::drop-down, QComboBox#ModbusTypeBox::drop-down{ subcontrol-origin: padding; @@ -689,7 +701,18 @@ QComboBox#setBox::drop-down, QComboBox#ProTypeBox::drop-down,QComboBox#TcRtdType border:none; } -QComboBox#setBox::drop-down, QComboBox#ProTypeBox::drop-down,QComboBox#TcRtdTypeBox::drop-down, QComboBox#ModbusTypeBox::drop-down { +QComboBox#timeBox::drop-down{ + + subcontrol-origin: padding; + + subcontrol-position: top right; + + width: 25px; + + border:none; +} + +QComboBox#setBox::drop-down, QComboBox#ProTypeBox::drop-down,QComboBox#TcRtdTypeBox::drop-down, QComboBox#ModbusTypeBox::drop-down, QComboBox#timeBox::drop-down{ image: url(Static/down.png); @@ -756,6 +779,14 @@ QComboBox#setBox QAbstractItemView::item:hover{ font-weight: 520; } + +QComboBox#timeBox QAbstractItemView::item:hover{ + + background-color:#7cceff; + color: #889399; + +} + QTextEdit#mesEdit{ border: 2px solid #dddddd; border-radius: 8px; @@ -763,5 +794,14 @@ QTextEdit#mesEdit{ font-size: 20px; } +QListView#trendListView{ + + font: 22px "PingFangSC-Regular"; + +} + +QListView#trendListView::item{ + margin-bottom: 10px; +} diff --git a/UI/TrendManage/TrendWidget.py b/UI/TrendManage/TrendWidget.py index 28a116d..454f0ad 100644 --- a/UI/TrendManage/TrendWidget.py +++ b/UI/TrendManage/TrendWidget.py @@ -77,6 +77,7 @@ class TrendWidgets(QWidget): self.timeBox.activated.connect(self.refreshList) self.listview = QListView() + self.listview.setObjectName("trendListView") self.model = QStandardItemModel() @@ -103,7 +104,7 @@ class TrendWidgets(QWidget): self.gridLayout.addWidget(self.timeBox, 0, 0, 1, 3) self.gridLayout.addWidget(self.delBtn, 0, 3, 1, 1) self.gridLayout.addWidget(self.listview, 1, 0, 14, 4) - self.gridLayout.addWidget(self.trendWebView, 0, 4, 15, 15) + self.gridLayout.addWidget(self.trendWebView, 0, 4, 15, 22) self.gridLayout.setSpacing(10) self.gridLayout.setContentsMargins(20, 20, 20, 20) @@ -117,6 +118,8 @@ class TrendWidgets(QWidget): self.historyDB.deleteMem() InfluxMem.deleteMem(self.historyDB.mem) self.getMems() + self.exchangeProject() + self.model.clear() def itemCheckstate(self): # 勾选变量复选框事件 diff --git a/model/ClientModel/authentication.py b/model/ClientModel/authentication.py new file mode 100644 index 0000000..73cb86e --- /dev/null +++ b/model/ClientModel/authentication.py @@ -0,0 +1,152 @@ +import base64 +import win32api +from pyDes import * +import binascii +from PyQt5.QtCore import QSize, Qt +from PyQt5.QtWidgets import QMainWindow, QApplication, QFileDialog, QWidget, QLineEdit, QPushButton, QHBoxLayout, QVBoxLayout, QMessageBox, QLabel +from PyQt5 import QtCore, QtGui, QtWidgets +import os +import sys + + + +class Window(QWidget): + def __init__(self): + super().__init__() + self.initUI() + # self.setupUi() + + def setupUi(self): + + layout = QVBoxLayout() + # 第一行 + label1 = QLabel('Label 1') + #第二行 + input1 = QLineEdit() + + # 第三行 + label2 = QLabel('Label 2') + # 第四行 + input2 = QLineEdit() + # 第五行 + button = QPushButton('Button') + + layout.addWidget(button, alignment=Qt.AlignCenter) + self.show() + + + def initUI(self): + # 创建两个 QLineEdit 控件 + self.line_edit1 = QLineEdit() + self.line_edit2 = QLineEdit() + self.label1 = QLabel('输入盘符号:') + self.label2 = QLabel('激活码:') + self.reg = register() + + self.button2 = QPushButton('生成激活码') + self.button2.clicked.connect(self.check_license) + + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + vbox = QVBoxLayout() + vbox.addItem(spacerItem2) + vbox.addWidget(self.label1) + vbox.addWidget(self.line_edit1) + vbox.addWidget(self.label2) + vbox.addWidget(self.line_edit2) + + + vbox.addItem(spacerItem2) + vbox1 = QHBoxLayout() + vbox1.addItem(spacerItem) + vbox1.addWidget(self.button2) + vbox1.addItem(spacerItem) + + vbox2 = QVBoxLayout() + vbox2.addLayout(vbox) + vbox2.addLayout(vbox1) + vbox2.addItem(spacerItem2) + # 设置窗口布局,并设置窗口的标题和大小 + self.setLayout(vbox2) + self.setWindowTitle('产品许可激活') + self.resize(300, 300) + + # 显示窗口 + self.show() + + + def check_license(self): + if self.line_edit1.text(): + licese = self.line_edit1.text() + code = self.reg.DesEncrypt(licese).decode('utf-8') + self.line_edit2.setText(code) + else: + reply = QMessageBox.question(self.parent(), + '提示', + "请输入盘符号", + QMessageBox.Yes) + return + + +class register: + def __init__(self): + self.Des_Key = b"BHC#@*AW" # Key(可换) + self.Des_IV = b"\x22\x33\x35\x81\xBC\x38\x5A\xE7" # 自定义IV向量(可换) + + # 获取C盘卷序列号 + def getCVolumeSerialNumber(self): + CVolumeSerialNumber = win32api.GetVolumeInformation("C:\\")[1] + # print(CVolumeSerialNumber) + if CVolumeSerialNumber: + return str(CVolumeSerialNumber) + else: + return 0 + + # 使用DES加base64的形式加密 + def DesEncrypt(self, str): + # str = str + k = des(self.Des_Key, CBC, self.Des_IV, pad=None, padmode=PAD_PKCS5) + EncryptStr = k.encrypt(str) + print(type(EncryptStr)) + return base64.b64encode(EncryptStr) # 转base64编码返回 + + # 获取注册码,验证 + def regist(self, key): + key = key + self.str1 = base64.b64decode(key) + + # 由于输入不符合base64规则的字符串会引起异常,所以需要增加输入判断 + + if key: + content = self.getCVolumeSerialNumber() + + key_decrypted = str(self.DesDecrypt()) + if content != 0 and key_decrypted != 0: + if content != key_decrypted: + print("wrong register code, please check and input your register code again:") + self.regist() + elif content == key_decrypted: + return True + + else: + return False + else: + return False + else: + self.regist() + return False + + # des解码 + def DesDecrypt(self): + k = des(self.Des_Key, CBC, self.Des_IV, pad=None, padmode=PAD_PKCS5) + DecryptStr = k.decrypt(self.str1) + return DecryptStr.decode('utf-8') +if __name__ == '__main__': + app = QApplication(sys.argv) + window = Window() + sys.exit(app.exec_()) + + + + + diff --git a/model/HistoryDBModel/HistoryDBManage.py b/model/HistoryDBModel/HistoryDBManage.py index 95b191b..bdf1aa4 100644 --- a/model/HistoryDBModel/HistoryDBManage.py +++ b/model/HistoryDBModel/HistoryDBManage.py @@ -19,7 +19,7 @@ def parseDate(date_string: str): class HistoryDBManage(): - token = 'bWcPFA8o3CHoWi9dhJJxBHmD6lrpJ0KmzMA06FjAAGzktwwyreVF6dBCL9G2oonXzQdIUQcuMJyCe_TMwM-0XA==' + token = 'jtTFa-rtobjdxWm7fKS7Tk2gZECrXwdM59799SddTcqDWDGiQTPEFYy5VW6IHgsAK5RZMtMLWmpZA3PaipOkmg==' org = "DCS" # bucket = "history" url = "http://localhost:6324"