|
@@ -0,0 +1,132 @@
|
|
|
+import sys
|
|
|
+import shutil
|
|
|
+from PyQt5.QtGui import QIcon
|
|
|
+from cryptography.fernet import Fernet
|
|
|
+from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog, QVBoxLayout, QLabel, QMessageBox
|
|
|
+
|
|
|
+
|
|
|
+class FileDialogExample(QWidget):
|
|
|
+ def __init__(self):
|
|
|
+ super().__init__()
|
|
|
+
|
|
|
+ # 设置窗口
|
|
|
+ self.setWindowTitle("许可更新管理器")
|
|
|
+ self.setGeometry(100, 100, 300, 150)
|
|
|
+
|
|
|
+ # 设置窗口图标
|
|
|
+ self.setWindowIcon(QIcon("icon.png")) # 使用你自己的图标文件路径
|
|
|
+ self.resize(300, 120)
|
|
|
+ # 创建布局
|
|
|
+ layout = QVBoxLayout()
|
|
|
+
|
|
|
+ # 创建标签
|
|
|
+ self.label = QLabel("请选择一个许可文件", self)
|
|
|
+ self.label.setWordWrap(True)
|
|
|
+ layout.addWidget(self.label)
|
|
|
+
|
|
|
+ # 创建选择文件按钮
|
|
|
+ self.select_file_button = QPushButton("选择文件", self)
|
|
|
+ self.select_file_button.setFixedSize(60, 25)
|
|
|
+ self.select_file_button.clicked.connect(self.select_file)
|
|
|
+ layout.addWidget(self.select_file_button)
|
|
|
+
|
|
|
+ # 创建确定按钮
|
|
|
+ self.ok_button = QPushButton("确定", self)
|
|
|
+ self.ok_button.setFixedSize(60, 25)
|
|
|
+ self.ok_button.clicked.connect(self.ok_button_clicked)
|
|
|
+ layout.addWidget(self.ok_button)
|
|
|
+
|
|
|
+ # 设置窗口布局
|
|
|
+ self.setLayout(layout)
|
|
|
+
|
|
|
+ def copy_file(self, src_path, dst_path):
|
|
|
+ shutil.copy(src_path, dst_path)
|
|
|
+
|
|
|
+ def select_file(self):
|
|
|
+ # 打开文件对话框选择文件
|
|
|
+ options = QFileDialog.Options()
|
|
|
+ file, _ = QFileDialog.getOpenFileName(self, "选择文件", "", "Text Files (*.txt);;All Files (*)",
|
|
|
+ options=options)
|
|
|
+ if file:
|
|
|
+ print(file)
|
|
|
+ try:
|
|
|
+ self.selected_file = file # 保存选择的文件路径
|
|
|
+ licensefile = file
|
|
|
+ # 打开文件并读取内容
|
|
|
+ text = []
|
|
|
+ with open(licensefile, 'r') as file:
|
|
|
+ for line in file:
|
|
|
+ text.append(line.replace('\n', ' '))
|
|
|
+ # 打印文件内容
|
|
|
+ print(text)
|
|
|
+ # 尝试执行的代码
|
|
|
+ fernet = Fernet(text[0].encode("utf-8"))
|
|
|
+ decrypted_message = fernet.decrypt(text[1].encode("utf-8"))
|
|
|
+ license = decrypted_message.decode('utf-8')
|
|
|
+ licenseDict = self.str_to_dict(license)
|
|
|
+ host = licenseDict["host"]
|
|
|
+ date = licenseDict["license"]
|
|
|
+ # QMessageBox.information(self, "提示信息", f"许可文件解析成功,授权机器名:{host},授权到期时间:{date}")
|
|
|
+ self.label.setStyleSheet("color: green;") # 这里 #999999 是一种浅灰色
|
|
|
+ self.label.setText("许可文件解析成功,授权机器名:{},授权到期时间:{}。".format(host, date))
|
|
|
+ except Exception as e:
|
|
|
+ del self.selected_file # 保存选择的文件路径
|
|
|
+ # 处理异常的代码
|
|
|
+ # QMessageBox.critical(None, 'Error', "许可文件解析失败,请检查!")
|
|
|
+ self.label.setStyleSheet("color: red;") # 这里 #999999 是一种浅灰色
|
|
|
+ self.label.setText("许可文件解析失败,请检查!")
|
|
|
+
|
|
|
+ def ok_button_clicked(self):
|
|
|
+ # 执行业务逻辑
|
|
|
+ if hasattr(self, 'selected_file'):
|
|
|
+ licensefile = "license.txt"
|
|
|
+ self.copy_file(self.selected_file, licensefile)
|
|
|
+ # 打开文件并读取内容
|
|
|
+ # text = []
|
|
|
+ # with open(licensefile, 'r') as file:
|
|
|
+ # for line in file:
|
|
|
+ # text.append(line.replace('\n', ' '))
|
|
|
+ # # 打印文件内容
|
|
|
+ # print(text)
|
|
|
+ # # 尝试执行的代码
|
|
|
+ # fernet = Fernet(text[0].encode("utf-8"))
|
|
|
+ # decrypted_message = fernet.decrypt(text[1].encode("utf-8"))
|
|
|
+ # license = decrypted_message.decode('utf-8')
|
|
|
+ # licenseDict = self.str_to_dict(license)
|
|
|
+ # host = licenseDict["host"]
|
|
|
+ # date = licenseDict["license"]
|
|
|
+ # QMessageBox.information(self, "提示信息", f"许可文件更新成功,授权机器名:{host},授权到期时间:{date}")
|
|
|
+ QMessageBox.information(self, "提示信息", f"许可文件更新成功")
|
|
|
+ # # 假设这里是业务逻辑:读取文件内容
|
|
|
+ # try:
|
|
|
+ # with open(self.selected_file, 'r') as f:
|
|
|
+ # content = f.read()
|
|
|
+ # print(f"文件内容: {content}")
|
|
|
+ # except Exception as e:
|
|
|
+ # print(f"读取文件失败: {e}")
|
|
|
+ else:
|
|
|
+ QMessageBox.information(self, "提示信息", "请选择许可文件")
|
|
|
+
|
|
|
+ def str_to_dict(self, string):
|
|
|
+ # 去除首尾的花括号
|
|
|
+ string = string.strip("{}")
|
|
|
+ # 分割每个键值对
|
|
|
+ pairs = string.split(", ")
|
|
|
+ # 创建空字典
|
|
|
+ result = {}
|
|
|
+ # 遍历键值对并添加到字典中
|
|
|
+ for pair in pairs:
|
|
|
+ key, value = pair.split(": ")
|
|
|
+ # 去除键和值两边的引号
|
|
|
+ key = key.strip("'")
|
|
|
+ value = value.strip("'")
|
|
|
+ # 添加到字典中
|
|
|
+ result[key] = value
|
|
|
+ return result
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ app = QApplication(sys.argv)
|
|
|
+ window = FileDialogExample()
|
|
|
+ window.show()
|
|
|
+ sys.exit(app.exec_())
|