| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- 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
- import logging
- logging.basicConfig(level=logging.DEBUG, format='%(asctime)s: %(message)s')
- logger = logging.getLogger(__name__)
- class CategoryDialog(QDialog):
- def __init__(self, parent=None, title="添加品类", initial_name="", initial_code=""):
- super().__init__(parent)
- self.setWindowTitle(title)
- self.setGeometry(100, 100, 400, 150)
- layout = QDialogVBoxLayout()
- # 品类名称输入框
- name_label = QLabel("品类名称")
- self.category_edit = QDialogLineEdit()
- self.category_edit.setText(initial_name)
- layout.addWidget(name_label)
- layout.addWidget(self.category_edit)
- # 品类编码输入框
- code_label = QLabel("品类编码")
- self.category_code_edit = QDialogLineEdit()
- self.category_code_edit.setText(initial_code)
- layout.addWidget(code_label)
- layout.addWidget(self.category_code_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_category(self):
- dialog = CategoryDialog(self, "添加品类")
- if dialog.exec():
- category_name = dialog.category_edit.text()
- category_code = dialog.category_code_edit.text()
- if category_name and category_code:
- item = QTreeWidgetItem(self.tree_widget)
- item.setText(1, category_name)
- item.setText(2, category_code)
- checkbox = QCheckBox()
- checkbox.setChecked(False)
- self.tree_widget.setItemWidget(item, 0, checkbox)
- @staticmethod
- def delete_category(self):
- selected_items = self.tree_widget.selectedItems()
- for item in selected_items:
- (item.parent() or self.tree_widget).takeTopLevelItem(self.tree_widget.indexOfTopLevelItem(item))
- @staticmethod
- def edit_category(self):
- selected_items = self.tree_widget.selectedItems()
- if len(selected_items) != 1:
- QMessageBox.warning(self, "编辑品类", "请选择一个品类进行编辑")
- return
- item = selected_items[0]
- dialog = CategoryDialog(self, "编辑品类", item.text(1), item.text(2))
- if dialog.exec():
- new_category_name = dialog.category_edit.text()
- new_category_code = dialog.category_code_edit.text()
- if new_category_name and new_category_code:
- item.setText(1, new_category_name)
- item.setText(2, new_category_code)
- @staticmethod
- def save_categories(self):
- # 连接到SQLite数据库
- conn = sqlite3.connect('buff.db')
- cursor = conn.cursor()
- # 创建表(如果表不存在)
- cursor.execute('''
- CREATE TABLE IF NOT EXISTS categories (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- name TEXT NOT NULL,
- code TEXT NOT NULL,
- selected BOOLEAN NOT NULL DEFAULT 0 -- 新增字段,用于存储选择状态
- )
- ''')
- # 清空表中的数据
- cursor.execute('DELETE FROM categories')
- # 获取树形控件中的所有项
- for i in range(self.tree_widget.topLevelItemCount()):
- item = self.tree_widget.topLevelItem(i)
- category_name = item.text(1)
- category_code = item.text(2)
- checkbox = self.tree_widget.itemWidget(item, 0)
- selected = checkbox.isChecked() # 获取复选框的状态
- # 插入数据到表中
- cursor.execute('''
- INSERT INTO categories (name, code, selected)
- VALUES (?, ?, ?)
- ''', (category_name, category_code, selected))
- # 提交更改并关闭连接
- conn.commit()
- conn.close()
- QMessageBox.information(self, "保存品类信息", "品类信息已成功保存")
|