AppearanceDialog.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import sys
  2. from stringprep import in_table_c11
  3. 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
  4. from PyQt5.QtCore import Qt
  5. import requests as req
  6. import time,random,numpy as np
  7. import threading
  8. import asyncio
  9. import json
  10. from PyQt5.QtWidgets import QFileDialog
  11. from PyQt5.QtCore import pyqtSignal, QObject,pyqtSlot
  12. import sqlite3
  13. from CollectibleDialog import CollectibleDialog
  14. import logging
  15. logging.basicConfig(level=logging.DEBUG, format='%(asctime)s: %(message)s')
  16. logger = logging.getLogger(__name__)
  17. class AppearanceDialog(QDialog):
  18. def __init__(self, parent=None, title="添加外观", initial_code="", initial_name=""):
  19. super().__init__(parent)
  20. self.setWindowTitle(title)
  21. self.setGeometry(100, 100, 200, 200)
  22. layout = QDialogVBoxLayout()
  23. # 外观编码输入框
  24. code_label = QLabel("外观编码")
  25. self.appearance_code_edit = QDialogLineEdit()
  26. self.appearance_code_edit.setText(initial_code)
  27. layout.addWidget(code_label)
  28. layout.addWidget(self.appearance_code_edit)
  29. # 外观名称输入框
  30. name_label = QLabel("外观名称")
  31. self.appearance_name_edit = QDialogLineEdit()
  32. self.appearance_name_edit.setText(initial_name)
  33. layout.addWidget(name_label)
  34. layout.addWidget(self.appearance_name_edit)
  35. button_box = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel)
  36. button_box.accepted.connect(self.accept)
  37. button_box.rejected.connect(self.reject)
  38. layout.addWidget(button_box)
  39. self.setLayout(layout)
  40. @staticmethod
  41. def add_appearance(self):
  42. dialog = AppearanceDialog(self, "添加外观")
  43. if dialog.exec():
  44. appearance_code = dialog.appearance_code_edit.text()
  45. appearance_name = dialog.appearance_name_edit.text()
  46. if appearance_code and appearance_name:
  47. item = QTreeWidgetItem(self.appearance_tree_widget)
  48. item.setText(1, appearance_code)
  49. item.setText(2, appearance_name)
  50. checkbox = QCheckBox()
  51. checkbox.setChecked(False)
  52. self.appearance_tree_widget.setItemWidget(item, 0, checkbox)
  53. @staticmethod
  54. def delete_appearance(self):
  55. selected_items = self.appearance_tree_widget.selectedItems()
  56. for item in selected_items:
  57. (item.parent() or self.appearance_tree_widget).takeTopLevelItem(self.appearance_tree_widget.indexOfTopLevelItem(item))
  58. @staticmethod
  59. def edit_appearance(self):
  60. selected_items = self.appearance_tree_widget.selectedItems()
  61. if len(selected_items) != 1:
  62. QMessageBox.warning(self, "编辑外观", "请选择一个外观进行编辑")
  63. return
  64. item = selected_items[0]
  65. dialog = AppearanceDialog(self, "编辑外观", item.text(1), item.text(2))
  66. if dialog.exec():
  67. new_appearance_code = dialog.appearance_code_edit.text()
  68. new_appearance_name = dialog.appearance_name_edit.text()
  69. if new_appearance_code and new_appearance_name:
  70. item.setText(1, new_appearance_code)
  71. item.setText(2, new_appearance_name)
  72. @staticmethod
  73. def save_appearances(self):
  74. # 连接到SQLite数据库
  75. conn = sqlite3.connect('buff.db')
  76. cursor = conn.cursor()
  77. # 清空表中的数据
  78. cursor.execute('DELETE FROM appearances')
  79. # 获取树形控件中的所有项
  80. for i in range(self.appearance_tree_widget.topLevelItemCount()):
  81. item = self.appearance_tree_widget.topLevelItem(i)
  82. appearance_code = item.text(1)
  83. appearance_name = item.text(2)
  84. checkbox = self.appearance_tree_widget.itemWidget(item, 0)
  85. selected = checkbox.isChecked() # 获取复选框的状态
  86. # 插入数据到表中
  87. cursor.execute('''
  88. INSERT INTO appearances (code, name,selected)
  89. VALUES (?, ?,?)
  90. ''', (appearance_code, appearance_name,selected))
  91. # 提交更改并关闭连接
  92. conn.commit()
  93. conn.close()
  94. QMessageBox.information(self, "保存外观信息", "外观信息已成功保存")