非常抱歉,代码依然存在问题。上述错误与 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 小助理,如未能正确解答您的问题,请继续追问。 |