| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874 |
- import sys
- from PyQt6.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 PyQt6.QtCore import Qt
- class MainWindow(QMainWindow):
- def __init__(self):
- super().__init__()
- # 初始化 phone_edit_map
- self.setup_phone_edit_map()
- # 设置窗口标题和大小
- self.setWindowTitle("BUFF选品扫货组件")
- self.setGeometry(100, 100, 1500, 800)
- # 创建一个垂直布局
- layout = QVBoxLayout()
- layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保垂直布局内容靠左对齐
- # 创建一个水平布局来放置按钮
- button_layout = QHBoxLayout()
- button_layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保水平布局内容靠左对齐
- # 创建两个按钮
- button1 = QPushButton("选品")
- button2 = QPushButton("扫货")
- # 创建停止按钮
- stop_button1 = QPushButton("停止选品")
- stop_button2 = QPushButton("停止扫货")
- # 将按钮添加到水平布局中
- button_layout.addWidget(button1)
- button_layout.addWidget(stop_button1) # 添加停止选品按钮
- button_layout.addWidget(button2)
- button_layout.addWidget(stop_button2) # 添加停止扫货按钮
- # 连接按钮的点击事件
- button1.clicked.connect(self.show_selected_phone_number)
- stop_button1.clicked.connect(self.stop_selection) # 连接停止选品按钮的点击事件
- # 将水平布局添加到垂直布局中
- layout.addLayout(button_layout)
- # 创建一个Tab容器
- self.tab_widget = QTabWidget()
- # 向Tab容器中添加10个标签页
- for i in range(1, 12): # 修改循环范围,增加一个标签页
- tab = QWidget()
- tab_layout = QVBoxLayout()
- tab_layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保标签页布局内容靠左对齐
- if i == 1:
- form_layout = self.create_account_info_form("选品")
- tab_layout.addLayout(form_layout)
- elif i == 2:
- form_layout = self.create_account_info_form("扫货")
- tab_layout.addLayout(form_layout)
- elif i == 3:
- tree_layout = self.create_category_info_form()
- tab_layout.addLayout(tree_layout)
- elif i == 4:
- tree_layout = self.create_quality_info_form()
- tab_layout.addLayout(tree_layout)
- elif i == 5:
- tree_layout = self.create_type_info_form()
- tab_layout.addLayout(tree_layout)
- elif i == 6:
- tree_layout = self.create_appearance_info_form()
- tab_layout.addLayout(tree_layout)
- elif i == 7:
- tree_layout = self.create_favorite_info_form()
- tab_layout.addLayout(tree_layout)
- elif i == 8:
- form_layout = self.create_run_config_form()
- tab_layout.addLayout(form_layout)
- elif i == 9:
- label = QLabel("BUFF扫货配置信息") # 修改标题
- tab_layout.addWidget(label)
- elif i == 10:
- self.selection_log_text_edit = QTextEdit() # 创建 QTextEdit 用于显示选品日志
- self.selection_log_text_edit.setReadOnly(True) # 设置为只读
- tab_layout.addWidget(self.selection_log_text_edit)
- elif i == 11: # 新增标签页
- label = QLabel("BUFF扫货日志")
- tab_layout.addWidget(label)
- # 在BUFF扫货日志标签页内加入一个下拉框
- dropdown = QComboBox()
- dropdown.addItems(["1您好", "2您不好", "3您很好"])
- tab_layout.addWidget(dropdown)
- tab.setLayout(tab_layout)
- if i == 1:
- self.tab_widget.addTab(tab, "选品账号信息")
- elif i == 2:
- self.tab_widget.addTab(tab, "扫货账号信息")
- elif i == 3:
- self.tab_widget.addTab(tab, "BUFF品类信息")
- elif i == 4:
- self.tab_widget.addTab(tab, "BUFF品质信息")
- elif i == 5:
- self.tab_widget.addTab(tab, "BUFF种类信息")
- elif i == 6:
- self.tab_widget.addTab(tab, "BUFF外观信息")
- elif i == 7:
- self.tab_widget.addTab(tab, "BUFF收藏品信息")
- elif i == 8:
- self.tab_widget.addTab(tab, "BUFF选品基础配置")
- elif i == 9:
- self.tab_widget.addTab(tab, "BUFF扫货配置信息")
- elif i == 10:
- self.tab_widget.addTab(tab, "BUFF选品日志")
- elif i == 11: # 新增标签页
- self.tab_widget.addTab(tab, "BUFF扫货日志")
- # 将Tab容器添加到布局中
- layout.addWidget(self.tab_widget)
- # 创建一个中心部件,并将布局设置为中心部件的布局
- container = QWidget()
- container.setLayout(layout)
- # 将中心部件设置为主窗口的中心部件
- self.setCentralWidget(container)
- def create_account_info_form(self, prefix):
- form_layout = QFormLayout()
- form_layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保表单布局内容靠左对齐
- # 创建输入框及其标签
- phone_label = QLabel(f"{prefix}手机号码")
- phone_edit = QLineEdit()
- phone_edit.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(phone_label, phone_edit)
- email_label = QLabel(f"{prefix}邮箱号")
- email_edit = QLineEdit()
- email_edit.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(email_label, email_edit)
- email_alias_label = QLabel(f"{prefix}邮箱特殊代码")
- email_alias_edit = QLineEdit()
- email_alias_edit.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(email_alias_label, email_alias_edit)
- cookie_label = QLabel(f"{prefix}cookie")
- cookie_edit = QTextEdit() # 使用QTextEdit代替QLineEdit
- cookie_edit.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(cookie_label, cookie_edit)
- # 保存输入框的引用以便后续访问
- self.phone_edit_map[prefix] = phone_edit
- return form_layout
- def create_quality_info_form(self):
- layout = QVBoxLayout()
- layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保布局内容靠左对齐
- # 创建树形控件
- self.quality_tree_widget = QTreeWidget()
- self.quality_tree_widget.setHeaderLabels(["品质选择", "品质名称", "品质编码"])
- self.quality_tree_widget.setColumnCount(3)
- self.quality_tree_widget.setSelectionMode(QTreeWidget.SelectionMode.ExtendedSelection)
- self.quality_tree_widget.setRootIsDecorated(True) # 启用根节点的装饰
- self.quality_tree_widget.setAlternatingRowColors(True) # 设置交替行颜色
- self.quality_tree_widget.setStyleSheet("QTreeWidget::item { padding: 5px; }") # 设置项的内边距
- # 启用复选框
- self.quality_tree_widget.setColumnWidth(0, 50) # 设置品质选择列的宽度
- self.quality_tree_widget.setColumnWidth(1, 300) # 设置品质名称列的宽度
- self.quality_tree_widget.setColumnWidth(2, 150) # 设置品质编码列的宽度
- self.quality_tree_widget.setHeaderItem(QTreeWidgetItem(["品质选择", "品质名称", "品质编码"])) # 设置表头
- self.quality_tree_widget.header().setDefaultAlignment(Qt.AlignmentFlag.AlignLeft) # 设置表头对齐方式
- # 添加默认数据
- default_qualities = [
- ("默认品质1", "001"),
- ("默认品质2", "002")
- ]
- for quality_name, quality_code in default_qualities:
- item = QTreeWidgetItem(self.quality_tree_widget)
- item.setText(1, quality_name)
- item.setText(2, quality_code)
- checkbox = QCheckBox()
- checkbox.setChecked(False)
- self.quality_tree_widget.setItemWidget(item, 0, checkbox)
- layout.addWidget(self.quality_tree_widget)
- # 创建按钮布局
- button_layout = QHBoxLayout()
- button_layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保按钮布局内容靠左对齐
- # 创建添加按钮
- add_button = QPushButton("添加")
- add_button.clicked.connect(self.add_quality)
- button_layout.addWidget(add_button)
- # 创建删除按钮
- delete_button = QPushButton("删除")
- delete_button.clicked.connect(self.delete_quality)
- button_layout.addWidget(delete_button)
- # 创建编辑按钮
- edit_button = QPushButton("编辑")
- edit_button.clicked.connect(self.edit_quality)
- button_layout.addWidget(edit_button)
- layout.addLayout(button_layout)
- return layout
- def create_type_info_form(self):
- layout = QVBoxLayout()
- layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保布局内容靠左对齐
- # 创建树形控件
- self.type_tree_widget = QTreeWidget()
- self.type_tree_widget.setHeaderLabels(["选择", "种类名称", "种类编码"])
- self.type_tree_widget.setColumnCount(3)
- self.type_tree_widget.setSelectionMode(QTreeWidget.SelectionMode.ExtendedSelection)
- self.type_tree_widget.setRootIsDecorated(True) # 启用根节点的装饰
- self.type_tree_widget.setAlternatingRowColors(True) # 设置交替行颜色
- self.type_tree_widget.setStyleSheet("QTreeWidget::item { padding: 5px; }") # 设置项的内边距
- # 启用复选框
- self.type_tree_widget.setColumnWidth(0, 50) # 设置选择列的宽度
- self.type_tree_widget.setColumnWidth(1, 300) # 设置type名称列的宽度
- self.type_tree_widget.setColumnWidth(2, 150) # 设置type编码列的宽度
- self.type_tree_widget.setHeaderItem(QTreeWidgetItem(["选择", "种类名称", "种类编码"])) # 设置表头
- self.type_tree_widget.header().setDefaultAlignment(Qt.AlignmentFlag.AlignLeft) # 设置表头对齐方式
- layout.addWidget(self.type_tree_widget)
- # 创建按钮布局
- button_layout = QHBoxLayout()
- button_layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保按钮布局内容靠左对齐
- # 创建添加按钮
- add_button = QPushButton("添加")
- add_button.clicked.connect(self.add_type)
- button_layout.addWidget(add_button)
- # 创建删除按钮
- delete_button = QPushButton("删除")
- delete_button.clicked.connect(self.delete_type)
- button_layout.addWidget(delete_button)
- # 创建编辑按钮
- edit_button = QPushButton("编辑")
- edit_button.clicked.connect(self.edit_type)
- button_layout.addWidget(edit_button)
- layout.addLayout(button_layout)
- return layout
- def create_appearance_info_form(self):
- layout = QVBoxLayout()
- layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保布局内容靠左对齐
- # 创建树形控件
- self.appearance_tree_widget = QTreeWidget()
- self.appearance_tree_widget.setHeaderLabels(["选择", "外观名称", "外观编码"])
- self.appearance_tree_widget.setColumnCount(3)
- self.appearance_tree_widget.setSelectionMode(QTreeWidget.SelectionMode.ExtendedSelection)
- self.appearance_tree_widget.setRootIsDecorated(True) # 启用根节点的装饰
- self.appearance_tree_widget.setAlternatingRowColors(True) # 设置交替行颜色
- self.appearance_tree_widget.setStyleSheet("QTreeWidget::item { padding: 5px; }") # 设置项的内边距
- # 启用复选框
- self.appearance_tree_widget.setColumnWidth(0, 50) # 设置选择列的宽度
- self.appearance_tree_widget.setColumnWidth(1, 300) # 设置外观名称列的宽度
- self.appearance_tree_widget.setColumnWidth(2, 150) # 设置外观编码列的宽度
- self.appearance_tree_widget.setHeaderItem(QTreeWidgetItem(["选择", "外观名称", "外观编码"])) # 设置表头
- self.appearance_tree_widget.header().setDefaultAlignment(Qt.AlignmentFlag.AlignLeft) # 设置表头对齐方式
- layout.addWidget(self.appearance_tree_widget)
- # 创建按钮布局
- button_layout = QHBoxLayout()
- button_layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保按钮布局内容靠左对齐
- # 创建添加按钮
- add_button = QPushButton("添加")
- add_button.clicked.connect(self.add_appearance)
- button_layout.addWidget(add_button)
- # 创建删除按钮
- delete_button = QPushButton("删除")
- delete_button.clicked.connect(self.delete_appearance)
- button_layout.addWidget(delete_button)
- # 创建编辑按钮
- edit_button = QPushButton("编辑")
- edit_button.clicked.connect(self.edit_appearance)
- button_layout.addWidget(edit_button)
- layout.addLayout(button_layout)
- return layout
- def create_favorite_info_form(self):
- layout = QVBoxLayout()
- layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保布局内容靠左对齐
- # 创建树形控件
- self.favorite_tree_widget = QTreeWidget()
- self.favorite_tree_widget.setHeaderLabels(["选择", "收藏品名称", "收藏品编码"])
- self.favorite_tree_widget.setColumnCount(3)
- self.favorite_tree_widget.setSelectionMode(QTreeWidget.SelectionMode.ExtendedSelection)
- self.favorite_tree_widget.setRootIsDecorated(True) # 启用根节点的装饰
- self.favorite_tree_widget.setAlternatingRowColors(True) # 设置交替行颜色
- self.favorite_tree_widget.setStyleSheet("QTreeWidget::item { padding: 5px; }") # 设置项的内边距
- # 启用复选框
- self.favorite_tree_widget.setColumnWidth(0, 50) # 设置选择列的宽度
- self.favorite_tree_widget.setColumnWidth(1, 300) # 设置收藏品名称列的宽度
- self.favorite_tree_widget.setColumnWidth(2, 150) # 设置收藏品编码列的宽度
- self.favorite_tree_widget.setHeaderItem(QTreeWidgetItem(["选择", "收藏品名称", "收藏品编码"])) # 设置表头
- self.favorite_tree_widget.header().setDefaultAlignment(Qt.AlignmentFlag.AlignLeft) # 设置表头对齐方式
- layout.addWidget(self.favorite_tree_widget)
- # 创建按钮布局
- button_layout = QHBoxLayout()
- button_layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保按钮布局内容靠左对齐
- # 创建添加按钮
- add_button = QPushButton("添加")
- add_button.clicked.connect(self.add_favorite)
- button_layout.addWidget(add_button)
- # 创建删除按钮
- delete_button = QPushButton("删除")
- delete_button.clicked.connect(self.delete_favorite)
- button_layout.addWidget(delete_button)
- # 创建编辑按钮
- edit_button = QPushButton("编辑")
- edit_button.clicked.connect(self.edit_favorite)
- button_layout.addWidget(edit_button)
- layout.addLayout(button_layout)
- return layout
- def create_run_config_form(self):
- form_layout = QFormLayout() # 修改为QFormLayout
- form_layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保布局内容靠左对齐
- # 创建输入框及其标签
- min_price_label = QLabel("选品最低价")
- min_price_edit = QLineEdit()
- min_price_edit.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(min_price_label, min_price_edit)
- max_price_label = QLabel("选品最高价")
- max_price_edit = QLineEdit()
- max_price_edit.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(max_price_label, max_price_edit)
- sort_label = QLabel("选品排序模式")
- sort_combo = QComboBox()
- sort_combo.addItems(["默认", "价格升序", "价格降序", "在售数量降序"])
- sort_combo.setCurrentIndex(0) # 设置默认选项为“默认”
- sort_combo.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(sort_label, sort_combo)
- # 新增选品停止条件
- stop_condition_label = QLabel("选品停止条件")
- stop_condition_combo = QComboBox()
- stop_condition_combo.addItems(["按照成功数量", "按照扫描商品数量"])
- stop_condition_combo.setCurrentIndex(0) # 设置默认选项为“按照成功数量”
- stop_condition_combo.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(stop_condition_label, stop_condition_combo)
- # 新增成功数量配置
- success_count_label = QLabel("成功数量配置")
- success_count_edit = QLineEdit()
- success_count_edit.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(success_count_label, success_count_edit)
- # 新增扫描商品的数量
- scan_count_label = QLabel("扫描商品的数量")
- scan_count_edit = QLineEdit()
- scan_count_edit.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(scan_count_label, scan_count_edit)
- # 新增选品接口每页请求多少数量
- page_size_label = QLabel("选品接口每页请求多少数量")
- page_size_edit = QLineEdit()
- page_size_edit.setText("80") # 设置默认值为80
- page_size_edit.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(page_size_label, page_size_edit)
- # 新增每次调用BUFF接口暂停多少秒
- pause_time_label = QLabel("每次调用BUFF接口暂停多少秒")
- pause_time_edit = QLineEdit()
- pause_time_edit.setText("10") # 设置默认值为10
- pause_time_edit.setFixedWidth(500) # 设置固定宽度为500像素
- form_layout.addRow(pause_time_label, pause_time_edit)
- return form_layout
- def show_selected_phone_number(self):
- # 跳转到BUFF选品日志的标签
- self.tab_widget.setCurrentIndex(9)
- phone_number = self.phone_edit_map["选品"].text()
- log_message = f"选品手机号码: {phone_number}\n"
- self.selection_log_text_edit.append(log_message) # 将日志信息添加到 QTextEdit 中
- # 获取BUFF品类信息标签页所有品类选择选中的编码信息形成数组,处理没有选中的情况
- selected_categories = []
- for i in range(self.category_tree_widget.topLevelItemCount()):
- top_level_item = self.category_tree_widget.topLevelItem(i)
- #top_level_item中品类选择选中对应行的品类编码信息
- if top_level_item.checkState(0) == Qt.CheckState.Checked:
- selected_categories.append(top_level_item.text(2)) # 获取品类编码
- print(selected_categories)
- def show_shopping_phone_number(self):
- # 跳转到BUFF选品日志的标签
- self.tab_widget.setCurrentIndex(9)
- phone_number = self.phone_edit_map["扫货"].text()
- log_message = f"扫货手机号码: {phone_number}\n"
- self.selection_log_text_edit.append(log_message) # 将日志信息添加到 QTextEdit 中
- # 获取BUFF品类信息标签页所有品类选择选中的编码信息形成数组,处理没有选中的情况
- selected_categories = []
- for i in range(self.category_tree_widget.topLevelItemCount()):
- top_level_item = self.category_tree_widget.topLevelItem(i)
- # top_level_item中品类选择选中对应行的品类编码信息
- if top_level_item.checkState(0) == Qt.CheckState.Checked:
- selected_categories.append(top_level_item.text(2)) # 获取品类编码
- log_message = f"选中的品类编码: {', '.join(selected_categories)}\n"
- self.selection_log_text_edit.append(log_message) # 将日志信息添加到 QTextEdit 中
- # 获取BUFF品质信息标签页所有品质选择选中的编码信息形成数组,处理没有选中的情况
- selected_qualities = []
- for i in range(self.quality_tree_widget.topLevelItemCount()):
- top_level_item = self.quality_tree_widget.topLevelItem(i)
- # top_level_item中品质选择选中对应行的品质编码信息
- if top_level_item.checkState(0) == Qt.CheckState.Checked:
- selected_qualities.append(top_level_item.text(2)) # 获取品质编码
- log_message = f"选中的品质编码: {', '.join(selected_qualities)}\n"
- self.selection_log_text_edit.append(log_message) # 将日志信息添加到 QTextEdit 中
- # 添加停止选品和停止扫货的方法
- def stop_selection(self):
- QMessageBox.information(self, "停止选品", "选品操作已停止")
- def stop_shopping(self):
- QMessageBox.information(self, "停止扫货", "扫货操作已停止")
- def add_quality(self):
- dialog = QualityDialog(self, "添加品质")
- if dialog.exec():
- quality_name = dialog.quality_edit.text()
- quality_code = dialog.quality_code_edit.text()
- if quality_name and quality_code:
- item = QTreeWidgetItem(self.quality_tree_widget)
- item.setText(1, quality_name)
- item.setText(2, quality_code)
- checkbox = QCheckBox()
- checkbox.setChecked(False)
- self.quality_tree_widget.setItemWidget(item, 0, checkbox)
- def delete_quality(self):
- selected_items = self.quality_tree_widget.selectedItems()
- for item in selected_items:
- index = self.quality_tree_widget.indexOfTopLevelItem(item)
- if index != -1:
- self.quality_tree_widget.takeTopLevelItem(index)
- else:
- # 如果不是顶层项,递归删除子项
- parent = item.parent()
- if parent:
- parent.removeChild(item)
- def edit_quality(self):
- selected_items = self.quality_tree_widget.selectedItems()
- if len(selected_items) != 1:
- QMessageBox.warning(self, "编辑品质", "请选择一个品质进行编辑")
- return
- item = selected_items[0]
- dialog = QualityDialog(self, "编辑品质", item.text(1), item.text(2))
- if dialog.exec():
- new_quality_name = dialog.quality_edit.text()
- new_quality_code = dialog.quality_code_edit.text()
- if new_quality_name and new_quality_code:
- item.setText(1, new_quality_name)
- item.setText(2, new_quality_code)
- def add_type(self):
- dialog = TypeDialog(self, "添加种类")
- if dialog.exec():
- type_name = dialog.type_edit.text()
- type_code = dialog.type_code_edit.text()
- if type_name and type_code:
- item = QTreeWidgetItem(self.type_tree_widget)
- item.setText(1, type_name)
- item.setText(2, type_code)
- checkbox = QCheckBox()
- checkbox.setChecked(False)
- self.type_tree_widget.setItemWidget(item, 0, checkbox)
- def delete_type(self):
- selected_items = self.type_tree_widget.selectedItems()
- for item in selected_items:
- index = self.type_tree_widget.indexOfTopLevelItem(item)
- if index != -1:
- self.type_tree_widget.takeTopLevelItem(index)
- else:
- # 如果不是顶层项,递归删除子项
- parent = item.parent()
- if parent:
- parent.removeChild(item)
- def edit_type(self):
- selected_items = self.type_tree_widget.selectedItems()
- if len(selected_items) != 1:
- QMessageBox.warning(self, "编辑种类", "请选择一个种类进行编辑")
- return
- item = selected_items[0]
- dialog = TypeDialog(self, "编辑种类", item.text(1), item.text(2))
- if dialog.exec():
- new_type_name = dialog.type_edit.text()
- new_type_code = dialog.type_code_edit.text()
- if new_type_name and new_type_code:
- item.setText(1, new_type_name)
- item.setText(2, new_type_code)
- def add_appearance(self):
- dialog = AppearanceDialog(self, "添加外观")
- if dialog.exec():
- appearance_name = dialog.appearance_edit.text()
- appearance_code = dialog.appearance_code_edit.text()
- if appearance_name and appearance_code:
- item = QTreeWidgetItem(self.appearance_tree_widget)
- item.setText(1, appearance_name)
- item.setText(2, appearance_code)
- checkbox = QCheckBox()
- checkbox.setChecked(False)
- self.appearance_tree_widget.setItemWidget(item, 0, checkbox)
- def delete_appearance(self):
- selected_items = self.appearance_tree_widget.selectedItems()
- for item in selected_items:
- index = self.appearance_tree_widget.indexOfTopLevelItem(item)
- if index != -1:
- self.appearance_tree_widget.takeTopLevelItem(index)
- else:
- # 如果不是顶层项,递归删除子项
- parent = item.parent()
- if parent:
- parent.removeChild(item)
- def edit_appearance(self):
- selected_items = self.appearance_tree_widget.selectedItems()
- if len(selected_items) != 1:
- QMessageBox.warning(self, "编辑外观", "请选择一个外观进行编辑")
- return
- item = selected_items[0]
- dialog = AppearanceDialog(self, "编辑外观", item.text(1), item.text(2))
- if dialog.exec():
- new_appearance_name = dialog.appearance_edit.text()
- new_appearance_code = dialog.appearance_code_edit.text()
- if new_appearance_name and new_appearance_code:
- item.setText(1, new_appearance_name)
- item.setText(2, new_appearance_code)
- def add_favorite(self):
- dialog = FavoriteDialog(self, "添加收藏品")
- if dialog.exec():
- favorite_name = dialog.favorite_edit.text()
- favorite_code = dialog.favorite_code_edit.text()
- if favorite_name and favorite_code:
- item = QTreeWidgetItem(self.favorite_tree_widget)
- item.setText(1, favorite_name)
- item.setText(2, favorite_code)
- checkbox = QCheckBox()
- checkbox.setChecked(False)
- self.favorite_tree_widget.setItemWidget(item, 0, checkbox)
- def delete_favorite(self):
- selected_items = self.favorite_tree_widget.selectedItems()
- for item in selected_items:
- index = self.favorite_tree_widget.indexOfTopLevelItem(item)
- if index != -1:
- self.favorite_tree_widget.takeTopLevelItem(index)
- else:
- # 如果不是顶层项,递归删除子项
- parent = item.parent()
- if parent:
- parent.removeChild(item)
- def edit_favorite(self):
- selected_items = self.favorite_tree_widget.selectedItems()
- if len(selected_items) != 1:
- QMessageBox.warning(self, "编辑收藏品", "请选择一个收藏品进行编辑")
- return
- item = selected_items[0]
- dialog = FavoriteDialog(self, "编辑收藏品", item.text(1), item.text(2))
- if dialog.exec():
- new_favorite_name = dialog.favorite_edit.text()
- new_favorite_code = dialog.favorite_code_edit.text()
- if new_favorite_name and new_favorite_code:
- item.setText(1, new_favorite_name)
- item.setText(2, new_favorite_code)
- def setup_phone_edit_map(self):
- self.phone_edit_map = {}
- def create_category_info_form(self):
- layout = QVBoxLayout()
- layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保布局内容靠左对齐
- # 创建树形控件
- self.category_tree_widget = QTreeWidget()
- self.category_tree_widget.setHeaderLabels(["品类选择", "品类名称", "品类编码"])
- self.category_tree_widget.setColumnCount(3)
- self.category_tree_widget.setSelectionMode(QTreeWidget.SelectionMode.ExtendedSelection)
- self.category_tree_widget.setRootIsDecorated(True) # 启用根节点的装饰
- self.category_tree_widget.setAlternatingRowColors(True) # 设置交替行颜色
- self.category_tree_widget.setStyleSheet("QTreeWidget::item { padding: 5px; }") # 设置项的内边距
- # 启用复选框
- self.category_tree_widget.setColumnWidth(0, 50) # 设置品类选择列的宽度
- self.category_tree_widget.setColumnWidth(1, 300) # 设置品类名称列的宽度
- self.category_tree_widget.setColumnWidth(2, 150) # 设置品类编码列的宽度
- self.category_tree_widget.setHeaderItem(QTreeWidgetItem(["品类选择", "品类名称", "品类编码"])) # 设置表头
- self.category_tree_widget.header().setDefaultAlignment(Qt.AlignmentFlag.AlignLeft) # 设置表头对齐方式
- # 添加默认数据
- default_categories = [
- ("默认品类1", "001"),
- ("默认品类2", "002")
- ]
- for category_name, category_code in default_categories:
- item = QTreeWidgetItem(self.category_tree_widget)
- item.setText(1, category_name)
- item.setText(2, category_code)
- checkbox = QCheckBox()
- checkbox.setChecked(False)
- self.category_tree_widget.setItemWidget(item, 0, checkbox)
- layout.addWidget(self.category_tree_widget)
- # 创建按钮布局
- button_layout = QHBoxLayout()
- button_layout.setAlignment(Qt.AlignmentFlag.AlignLeft) # 确保按钮布局内容靠左对齐
- # 创建添加按钮
- add_button = QPushButton("添加")
- add_button.clicked.connect(self.add_category)
- button_layout.addWidget(add_button)
- # 创建删除按钮
- delete_button = QPushButton("删除")
- delete_button.clicked.connect(self.delete_category)
- button_layout.addWidget(delete_button)
- # 创建编辑按钮
- edit_button = QPushButton("编辑")
- edit_button.clicked.connect(self.edit_category)
- button_layout.addWidget(edit_button)
- layout.addLayout(button_layout)
- return layout
- 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.category_tree_widget)
- item.setText(1, category_name)
- item.setText(2, category_code)
- checkbox = QCheckBox()
- checkbox.setChecked(False)
- self.category_tree_widget.setItemWidget(item, 0, checkbox)
- def delete_category(self):
- selected_items = self.category_tree_widget.selectedItems()
- for item in selected_items:
- index = self.category_tree_widget.indexOfTopLevelItem(item)
- if index != -1:
- self.category_tree_widget.takeTopLevelItem(index)
- else:
- # 如果不是顶层项,递归删除子项
- parent = item.parent()
- if parent:
- parent.removeChild(item)
- def edit_category(self):
- selected_items = self.category_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)
- class QualityDialog(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.quality_edit = QDialogLineEdit()
- self.quality_edit.setText(initial_name)
- layout.addWidget(name_label)
- layout.addWidget(self.quality_edit)
- # 品质编码输入框
- code_label = QLabel("品质编码")
- self.quality_code_edit = QDialogLineEdit()
- self.quality_code_edit.setText(initial_code)
- layout.addWidget(code_label)
- layout.addWidget(self.quality_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)
- class TypeDialog(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()
- # type名称输入框
- name_label = QLabel("种类名称")
- self.type_edit = QDialogLineEdit()
- self.type_edit.setText(initial_name)
- layout.addWidget(name_label)
- layout.addWidget(self.type_edit)
- # type编码输入框
- code_label = QLabel("种类编码")
- self.type_code_edit = QDialogLineEdit()
- self.type_code_edit.setText(initial_code)
- layout.addWidget(code_label)
- layout.addWidget(self.type_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)
- class AppearanceDialog(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.appearance_edit = QDialogLineEdit()
- self.appearance_edit.setText(initial_name)
- layout.addWidget(name_label)
- layout.addWidget(self.appearance_edit)
- # 外观编码输入框
- code_label = QLabel("外观编码")
- self.appearance_code_edit = QDialogLineEdit()
- self.appearance_code_edit.setText(initial_code)
- layout.addWidget(code_label)
- layout.addWidget(self.appearance_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)
- class FavoriteDialog(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.favorite_edit = QDialogLineEdit()
- self.favorite_edit.setText(initial_name)
- layout.addWidget(name_label)
- layout.addWidget(self.favorite_edit)
- # 收藏品编码输入框
- code_label = QLabel("收藏品编码")
- self.favorite_code_edit = QDialogLineEdit()
- self.favorite_code_edit.setText(initial_code)
- layout.addWidget(code_label)
- layout.addWidget(self.favorite_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)
- 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)
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- window = MainWindow()
- window.show()
- sys.exit(app.exec())
|