import sys from stringprep import in_table_c11 from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QHBoxLayout, QWidget, QPushButton, QTabWidget, QLabel, QLineEdit, QTextEdit, QFormLayout, QMessageBox, QTreeWidget, QTreeWidgetItem, QDialog, QVBoxLayout as QDialogVBoxLayout, QLineEdit as QDialogLineEdit, QDialogButtonBox, QCheckBox, QComboBox from PyQt5.QtCore import Qt import requests as req import time,random,numpy as np import threading import asyncio import json from PyQt5.QtWidgets import QFileDialog from PyQt5.QtCore import pyqtSignal, QObject,pyqtSlot import sqlite3 from CollectibleDialog import CollectibleDialog class TypeDialog(QDialog): def __init__(self, parent=None, title="添加type", initial_code="", initial_name=""): super().__init__(parent) self.setWindowTitle(title) self.setGeometry(100, 100, 400, 150) layout = QDialogVBoxLayout() # type编码输入框 code_label = QLabel("type编码") self.type_code_edit = QDialogLineEdit() self.type_code_edit.setText(initial_code) layout.addWidget(code_label) layout.addWidget(self.type_code_edit) # type名称输入框 name_label = QLabel("type名称") self.type_name_edit = QDialogLineEdit() self.type_name_edit.setText(initial_name) layout.addWidget(name_label) layout.addWidget(self.type_name_edit) button_box = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel) button_box.accepted.connect(self.accept) button_box.rejected.connect(self.reject) layout.addWidget(button_box) self.setLayout(layout) @staticmethod def add_type(self): dialog = TypeDialog(self, "添加type") if dialog.exec(): type_code = dialog.type_code_edit.text() type_name = dialog.type_name_edit.text() if type_code and type_name: item = QTreeWidgetItem(self.type_tree_widget) item.setText(1, type_code) item.setText(2, type_name) checkbox = QCheckBox() checkbox.setChecked(False) self.type_tree_widget.setItemWidget(item, 0, checkbox) @staticmethod def delete_type(self): selected_items = self.type_tree_widget.selectedItems() for item in selected_items: (item.parent() or self.type_tree_widget).takeTopLevelItem(self.type_tree_widget.indexOfTopLevelItem(item)) @staticmethod def edit_type(self): selected_items = self.type_tree_widget.selectedItems() if len(selected_items) != 1: QMessageBox.warning(self, "编辑type", "请选择一个type进行编辑") return item = selected_items[0] dialog = TypeDialog(self, "编辑type", item.text(1), item.text(2)) if dialog.exec(): new_type_code = dialog.type_code_edit.text() new_type_name = dialog.type_name_edit.text() if new_type_code and new_type_name: item.setText(1, new_type_code) item.setText(2, new_type_name) @staticmethod def save_types(self): # 连接到SQLite数据库 conn = sqlite3.connect('buff.db') cursor = conn.cursor() # 清空表中的数据 cursor.execute('DELETE FROM types') # 获取树形控件中的所有项 for i in range(self.type_tree_widget.topLevelItemCount()): item = self.type_tree_widget.topLevelItem(i) type_code = item.text(1) type_name = item.text(2) checkbox = self.type_tree_widget.itemWidget(item, 0) selected = checkbox.isChecked() # 获取复选框的状态 # 插入数据到表中 cursor.execute(''' INSERT INTO types (code, name,selected) VALUES (?, ?, ?) ''', (type_code, type_name,selected)) # 提交更改并关闭连接 conn.commit() conn.close() QMessageBox.information(self, "保存type信息", "type信息已成功保存")