鱼C论坛

 找回密码
 立即注册
查看: 8779|回复: 239

[已解决]资产管理系统求教~~

  [复制链接]
发表于 2024-4-18 08:35:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 凊风 于 2024-4-18 08:55 编辑

请问能不能用Pyside6写一个相对完善的固定资产管理系统?
最佳答案
2024-4-18 08:35:43
当然可以用Pyside6写一个固定资产管理系统!Pyside6是一个跨平台的GUI工具包,可以帮助您创建漂亮且功能强大的用户界面。

以下是一个简单的示例代码,通过Pyside6创建一个基本的资产管理系统界面:

  1. from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton

  2. class AssetManagementSystem(QWidget):
  3.     def __init__(self):
  4.         super().__init__()
  5.         self.setWindowTitle('资产管理系统')
  6.         
  7.         layout = QVBoxLayout()
  8.         
  9.         asset_label = QLabel('资产名称:')
  10.         self.asset_input = QLineEdit()
  11.         layout.addWidget(asset_label)
  12.         layout.addWidget(self.asset_input)
  13.         
  14.         btn_add_asset = QPushButton('添加资产')
  15.         btn_add_asset.clicked.connect(self.add_asset)
  16.         layout.addWidget(btn_add_asset)
  17.         
  18.         self.setLayout(layout)
  19.    
  20.     def add_asset(self):
  21.         asset_name = self.asset_input.text()
  22.         # 在这里实现添加资产的逻辑
  23.         
  24.         self.asset_input.clear()

  25. if __name__ == '__main__':
  26.     app = QApplication([])
  27.     window = AssetManagementSystem()
  28.     window.show()
  29.     app.exec()
复制代码


这个示例创建了一个简单的资产管理系统界面,包含一个输入框和一个按钮。当用户点击"添加资产"按钮时,会调用`add_asset`方法,你可以在这个方法中实现具体的添加资产逻辑。

当然,这只是一个示例,您可以根据自己的需求进行扩展和修改。希望这可以帮助您开始编写固定资产管理系统!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-5-7 15:25:40 | 显示全部楼层
FishC 发表于 2024-4-18 08:35
当然可以用Pyside6写一个固定资产管理系统!Pyside6是一个跨平台的GUI工具包,可以帮助您创建漂亮且功能强 ...

self.data_model.append((code, name))

请问如何把与code对应的name取出来?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-7 15:30:16 | 显示全部楼层
FishC 发表于 2024-5-7 15:25
如果`self.data_model`是一个列表,其中每个元素是一个包含`(code, name)`的元组,您可以通过遍历列表 ...

我现在写的是:
self.province_name = self.data_model[self.province_code]

但是报错:
Traceback (most recent call last):
line 1187, in on_province_changed
    self.province_name = self.data_model[self.province_code]
                         ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: list indices must be integers or slices, not NoneType
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 08:55:48 | 显示全部楼层
FishC 发表于 2024-5-7 15:30
根据您提供的代码和错误信息,可以看出问题出现在`self.data_model`赋值给`self.province_name`上面。 ...

请问file_path = self.folder_path + '/' + "行政区划.xlsx"这句代码中,

如何提取出“行政区划.xlsx”这个文件名?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 10:52:09 | 显示全部楼层
FishC 发表于 2024-5-7 15:30
根据您提供的代码和错误信息,可以看出问题出现在`self.data_model`赋值给`self.province_name`上面。 ...

现有self.data_model: [('110000000000', '北京市'), ('120000000000', '天津市')],
请问要如何取出与编码对应的城市名?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 11:22:49 | 显示全部楼层
FishC 发表于 2024-5-8 10:52
假设`self.data_model`是一个字典,其中编码作为键,城市名作为值,你可以通过访问字典的方式获取与给 ...

现有self.data_model[code, name],
能不能直接用命令直接从self.data_model中取出与code对应的name?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 11:25:42 | 显示全部楼层
FishC 发表于 2024-5-8 11:23
如果`self.data_model`是一个字典,你可以使用索引操作来直接从中获取与给定`code`对应的`name`。以下 ...

我这样写:
province_code = self.comboBox.itemData(index)
self.province_code = province_code
self.province_name = self.get_city_name_by_code(province_code)

self.province_name却是None....
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 11:32:26 | 显示全部楼层
FishC 发表于 2024-5-8 11:25
在您的代码中,发现了一个问题。根据您之前提供的`get_city_name_by_code()`方法,它返回的是城市名而 ...

1、首先,定义省名和城市名应该没有区别(因为编码是唯一的);
2、我这样写:
    def get_city_name_by_code(self, code):
        if code in self.data_model:
            for data in self.data_model:
                if data['code'] == code:
                    return data['name']
        else:
            return None

province_code = self.comboBox.itemData(index)
        self.province_code = province_code
        print('省编码:', self.province_code)
        self.plainTextEdit.ensureCursorVisible()
        self.province_name = self.get_city_name_by_code(province_code)
        print('省名', self.province_name)

可是:省编码已经有了(如110000000000),省名却还是None.....
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 11:39:17 | 显示全部楼层
FishC 发表于 2024-5-8 11:32
在您提供的代码中,我注意到了问题所在。在`get_city_name_by_code()`方法中,您使用了两次`for data i ...

我的self.data_model=
[('110000000000', '北京市'), ('120000000000', '天津市'), ('130000000000', '河北省'), ('140000000000', '山西省'), ('150000000000', '内蒙古自治区'), ('210000000000', '辽宁省'), ('220000000000', '吉林省'), ('230000000000', '黑龙江省'), ('310000000000', '上海市'), ('320000000000', '江苏省'), ('330000000000', '浙江省'), ('340000000000', '安徽省'), ('350000000000', '福建省'), ('360000000000', '江西省'), ('370000000000', '山东省'), ('410000000000', '河南省'), ('420000000000', '湖北省'), ('430000000000', '湖南省'), ('440000000000', '广东省'), ('450000000000', '广西壮族自治区'), ('460000000000', '海南省'), ('500000000000', '重庆市'), ('510000000000', '四川省'), ('520000000000', '贵州省'), ('530000000000', '云南省'), ('540000000000', '西藏自治区'), ('610000000000', '陕西省'), ('620000000000', '甘肃省'), ('630000000000', '青海省'), ('640000000000', '宁夏回族自治区'), ('650000000000', '新疆维吾尔自治区')]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 11:42:17 | 显示全部楼层
FishC 发表于 2024-5-8 11:32
在您提供的代码中,我注意到了问题所在。在`get_city_name_by_code()`方法中,您使用了两次`for data i ...

我现有的self.data_model是这样的:
self.data_model=[('110000000000', '北京市'), ('120000000000', '天津市'), ('130000000000', '河北省'), ('140000000000', '山西省'), ('150000000000', '内蒙古自治区'), ('210000000000', '辽宁省'), ('220000000000', '吉林省'), ('230000000000', '黑龙江省'), ('310000000000', '上海市'), ('320000000000', '江苏省'), ('330000000000', '浙江省'), ('340000000000', '安徽省'), ('350000000000', '福建省'), ('360000000000', '江西省'), ('370000000000', '山东省'), ('410000000000', '河南省'), ('420000000000', '湖北省'), ('430000000000', '湖南省'), ('440000000000', '广东省'), ('450000000000', '广西壮族自治区'), ('460000000000', '海南省'), ('500000000000', '重庆市'), ('510000000000', '四川省'), ('520000000000', '贵州省'), ('530000000000', '云南省'), ('540000000000', '西藏自治区'), ('610000000000', '陕西省'), ('620000000000', '甘肃省'), ('630000000000', '青海省'), ('640000000000', '宁夏回族自治区'), ('650000000000', '新疆维吾尔自治区')]


已经有省编码=530000000000了,为什么取不出来省名称呢(省名称一直都是None)?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 11:43:51 | 显示全部楼层
FishC 发表于 2024-5-8 11:42
对于您提供的数据模型,请确保`self.data_model`是一个列表,其中每个元素是一个包含`code`和`name`键 ...


报错:
Traceback (most recent call last):
line 1181, in on_province_changed
    self.province_name = self.get_city_name_by_code(province_code)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  line 1166, in get_city_name_by_code
    if data['code'] == code:
       ~~~~^^^^^^^^
TypeError: tuple indices must be integers or slices, not str
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 11:46:29 | 显示全部楼层
FishC 发表于 2024-5-8 11:44
根据报错信息,可以推测`data`是一个元组(tuple),而不能像列表一样通过字符串来进行索引操作。因此 ...

这次对了,是我没描述清楚问题。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 18:13:47 | 显示全部楼层
FishC 发表于 2024-5-8 11:46
没问题,很高兴听到问题得到解决!如果您有任何其他问题或需要进一步的帮助,请随时提问。我会尽力帮助 ...

现有xlsx工作簿结构如下:
级别      区划代码          名称
1       530000000000       云南省
2       530400000000       玉溪市
3       530402000000       红塔区
4       530402001000       玉兴街道
5       530402001001       荷花社区居民委员会

请问能否用PySide6实现5层comboBox的顺序选择?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 18:17:23 | 显示全部楼层
FishC 发表于 2024-5-8 18:14
可以使用PySide6实现5层comboBox的顺序选择来模拟级别选择的效果。以下是一个示例代码,通过逐层选择来 ...

self.data_model列表中数据是这样的,没有code和name.

self.data_model = [
             '530000000000', '云南省',
            '530400000000', '玉溪市',
            '530402000000',  '红塔区',
             '530402001000',  '玉兴街道'},
             '530402001001', '荷花社区居民委员会'
        ]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 18:37:56 | 显示全部楼层
FishC 发表于 2024-5-8 18:17
如果`self.data_model`列表中的数据没有`code`和`name`字段,而是直接存储级别、区划代码和名称的话, ...

1、我的self.data_model中数据是全国的都有,意思就是很多很多条数据,上述这几个数据我只是用来举例说明层级关系的;
2、我现有的5个combobox分别是self.comboBox、self.comboBox_2、self.comboBox_3、self.comboBox_4和self.comboBox_5。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 19:08:37 | 显示全部楼层
FishC 发表于 2024-5-8 18:38
感谢您提供了更多的信息。基于您的要求,我们需要根据层级选择来动态更新`QComboBox`的选项。

以下 ...

能不能写成一个函数,让我调用一下?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 19:15:22 | 显示全部楼层
FishC 发表于 2024-5-8 19:10
当然可以!以下是一个封装成函数的示例代码,你可以按需调用:

data_model 数据是要从用户指定的路径(如E:\Temp\行政区划代码库.xlsx)来读取。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 19:30:43 | 显示全部楼层
FishC 发表于 2024-5-8 19:15
要从用户指定的路径中读取`data_model`数据,您可以使用Python中的库来处理Excel文件,例如`pandas`。
...

self.comboBox中不应该显示等级[1,2,3,4,5]
应该直接显示等级为1的省名称。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 19:44:25 | 显示全部楼层
FishC 发表于 2024-5-8 19:31
如果要在`self.comboBox`中直接显示等级为1的省名称而不显示等级,您可以对`setup_area_selection()`函 ...

self.comboBox的数据对了(省名称),
但是self.comboBox_2, self.comboBox_3, self.comboBox_4, self.comboBox_5数据都没更新。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-8 19:49:36 | 显示全部楼层
FishC 发表于 2024-5-8 19:44
对不起,看起来我在代码中忽略了更新其他级别的 `QComboBox` 的部分。以下是修改后的代码,应该能够正 ...

报错:
Traceback (most recent call last):
   line 1114, in select_folder
    self.setup_area_selection(self.comboboxes)
   line 1137, in setup_area_selection
    data_model['区划代码'].str.startswith(selected_code) & (data_model['级别'] == current_level)]
    ^^^^^^^^^^^^^^^^^^^^^^
  File "D:\PycharmProjects\pythonProject\.venv\Lib\site-packages\pandas\core\generic.py", line 6296, in __getattr__
    return object.__getattribute__(self, name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\PycharmProjects\pythonProject\.venv\Lib\site-packages\pandas\core\accessor.py", line 224, in __get__
    accessor_obj = self._accessor(obj)
                   ^^^^^^^^^^^^^^^^^^^
  File "D:\PycharmProjects\pythonProject\.venv\Lib\site-packages\pandas\core\strings\accessor.py", line 191, in __init__
    self._inferred_dtype = self._validate(data)
                           ^^^^^^^^^^^^^^^^^^^^
  File "D:\PycharmProjects\pythonProject\.venv\Lib\site-packages\pandas\core\strings\accessor.py", line 245, in _validate
    raise AttributeError("Can only use .str accessor with string values!")
AttributeError: Can only use .str accessor with string values!. Did you mean: 'std'?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-17 03:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表