|
发表于 2024-5-9 10:02:23
|
显示全部楼层
非常抱歉,代码依然存在问题。上述错误与 pandas 库的使用有关。这里的问题在于,`filtered_data = df` 这一行并没有筛选数据,导致出现了错误。您需要使用适当的筛选条件来过滤数据。
以下是一个修复后的示例:
- import sys
- from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QTableWidget, QTableWidgetItem, QLabel, QComboBox
- import pandas as pd
- # 创建主窗口类
- class AssetManagementSystem(QMainWindow):
- def __init__(self, data):
- super().__init__()
- self.setWindowTitle("资产管理系统")
- self.data = data
- self.init_ui()
- def init_ui(self):
- # 创建布局
- layout = QVBoxLayout()
- # 创建组合框
- combobox = QComboBox()
- combobox.addItem("全部")
- combobox.addItem("类型1")
- combobox.addItem("类型2")
- combobox.addItem("类型3")
- combobox.currentIndexChanged.connect(self.handle_combobox_changed)
- layout.addWidget(combobox)
- # 创建表格
- table_widget = QTableWidget()
- table_widget.setColumnCount(4)
- table_widget.setHorizontalHeaderLabels(["名称", "类型", "购买日期", "价值"])
- table_widget.setRowCount(len(self.data))
- for i, row in enumerate(self.data.iterrows()):
- for j, value in enumerate(row[1]):
- item = QTableWidgetItem(str(value))
- table_widget.setItem(i, j, item)
- layout.addWidget(table_widget)
- # 创建标签
- label = QLabel("总价值:$10000")
- layout.addWidget(label)
- # 创建主窗口部件
- central_widget = QWidget()
- central_widget.setLayout(layout)
- self.setCentralWidget(central_widget)
- def handle_combobox_changed(self, index):
- # 获取选择的类型
- selected_type = self.sender().currentText()
- # 根据选择的类型筛选数据
- if selected_type == "全部":
- filtered_data = self.data
- else:
- filtered_data = self.data[self.data["类型"] == selected_type]
- # 更新表格内容和标签显示
- table_widget = self.centralWidget().findChild(QTableWidget)
- table_widget.setRowCount(len(filtered_data))
- for i, row in enumerate(filtered_data.iterrows()):
- for j, value in enumerate(row[1]):
- item = QTableWidgetItem(str(value))
- table_widget.setItem(i, j, item)
- total_value = filtered_data["价值"].sum()
- label = self.centralWidget().findChild(QLabel)
- label.setText(f"总价值:${total_value}")
- if __name__ == "__main__":
- # 读取数据
- data = pd.read_csv("assets.csv")
- # 创建应用程序对象
- app = QApplication(sys.argv)
- # 创建主窗口对象
- main_window = AssetManagementSystem(data)
- # 显示主窗口
- main_window.show()
- # 运行应用程序
- sys.exit(app.exec())
复制代码
请确保您已经安装了 pandas 和 PySide6 模块,并将数据文件 `assets.csv` 放在相同的文件夹中。注意,这只是一个简单的示例,您可能需要根据实际需求进行修改和扩展。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|