鱼C论坛

 找回密码
 立即注册
查看: 416|回复: 181

资产管理系统求教~~

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

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

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

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

请问能不能用Pyside6写一个相对完善的固定资产管理系统?

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> 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取出来?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-7 15:25:48 | 显示全部楼层
凊风 发表于 2024-05-07 15:25
self.data_model.append((code, name))

请问如何把 ...


如果`self.data_model`是一个列表,其中每个元素是一个包含`(code, name)`的元组,您可以通过遍历列表中的元素,并使用条件判断来找到与给定`code`对应的`name`。以下是一个示例代码:

  1. def get_name_by_code(self, code):
  2.     for data in self.data_model:
  3.         if data[0] == code:
  4.             return data[1]
  5.         
  6.     return None
复制代码


在这个示例中,我们定义了一个`get_name_by_code`方法,它接受一个`code`参数,并在`self.data_model`列表中查找与给定`code`匹配的元素。如果找到了相应的元素,则返回该元素的第二个元素(即`name`),否则返回`None`。

您可以根据实际情况将这个方法添加到您的资产管理系统类中,并使用`get_name_by_code`方法来获取与指定`code`对应的`name`。例如:

  1. name = self.get_name_by_code('ABC123')
  2. if name:
  3.     print('与该code对应的name是:', name)
  4. else:
  5.     print('未找到与该code对应的name')
复制代码


希望这可以帮助您解决问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-7 15:30:34 | 显示全部楼层
凊风 发表于 2024-05-07 15:30
我现在写的是:
self.province_name = self.data_mod ...


根据您提供的代码和错误信息,可以看出问题出现在`self.data_model`赋值给`self.province_name`上面。错误提示说列表的索引必须是整数或切片,而不是NoneType。

这个错误可能是因为`self.data_model`并不是一个列表,而是一个空的NoneType对象。因此,在对其进行索引操作时出错了。

在修复这个问题之前,我们需要先确定`self.data_model`是什么类型的对象。请确保在代码的其他地方已经正确地初始化了`self.data_model`。如果它应该是一个列表,可以在实例化对象的时候进行初始化:

self.data_model = []

另外,如果`self.province_name`只是想获取`self.data_model`的值,那么直接将它们关联起来即可,不需要进行赋值操作。您可以直接使用`self.data_model`来代替`self.province_name`,例如:

name = self.data_model[index]

请注意,根据您的具体需求,可能需要对索引进行一些验证和边界检查,以确保不会出现索引超出范围的情况。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> 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”这个文件名?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-8 08:55:59 | 显示全部楼层
凊风 发表于 2024-05-08 08:55
请问file_path = self.folder_path + '/' + "行政区划 ...


要从文件路径中提取出文件名,您可以使用`os.path.basename()`函数来实现。这个函数会返回路径中的文件名部分。

在您的代码中,您可以这样写:

import os
file_name = os.path.basename(file_path)
print(file_name)

这样,`file_name`变量将得到"行政区划.xlsx"这个文件名。

希望这可以帮助您!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> 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', '天津市')],
请问要如何取出与编码对应的城市名?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-8 10:52:17 | 显示全部楼层
凊风 发表于 2024-05-08 10:52
现有self.data_model: ,
请问要如何取出与编码对应的 ...


假设`self.data_model`是一个字典,其中编码作为键,城市名作为值,你可以通过访问字典的方式获取与给定编码对应的城市名。

以下是一个示例代码:

  1. def get_city_name_by_code(self, code):
  2.     if code in self.data_model:
  3.         return self.data_model[code]
  4.     else:
  5.         return None

  6. # 使用示例
  7. city_name = self.get_city_name_by_code("ABC123")
  8. if city_name:
  9.     print(f"与该编码对应的城市名是:{city_name}")
  10. else:
  11.     print("未找到与该编码对应的城市名")
复制代码


在这个示例中,我们定义了一个`get_city_name_by_code`方法,它接受一个编码参数,并在`self.data_model`字典中查找与给定编码匹配的城市名。如果找到了相应的城市名,则返回该城市名,否则返回`None`。

您可以根据实际情况将这个方法添加到您的资产管理系统类中,并使用`get_city_name_by_code`方法来获取与指定编码对应的城市名。

希望这可以帮助您解决问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> 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?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-8 11:23:01 | 显示全部楼层
凊风 发表于 2024-05-08 11:22
现有self.data_model,
能不能直接用命令直接从self. ...


如果`self.data_model`是一个字典,你可以使用索引操作来直接从中获取与给定`code`对应的`name`。以下是一个示例代码:

  1. def get_name_by_code(self, code):
  2.     if code in self.data_model:
  3.         return self.data_model[code]
  4.     else:
  5.         return None

  6. # 使用示例
  7. name = self.get_name_by_code('ABC123')
  8. if name:
  9.     print('与该code对应的name是:', name)
  10. else:
  11.     print('未找到与该code对应的name')
复制代码


在这个示例中,我们定义了一个`get_name_by_code`方法,它接受一个`code`参数,并使用索引操作从`self.data_model`字典中获取与给定`code`对应的`name`。如果找到了相应的`name`,则返回该`name`,否则返回`None`。

您可以根据实际情况将这个方法添加到您的资产管理系统类中,并使用`get_name_by_code`方法来获取与指定`code`对应的`name`。

希望这可以满足您的需求!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> 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....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-8 11:25:58 | 显示全部楼层
凊风 发表于 2024-05-08 11:25
我这样写:
province_code = self.comboBox.itemData ...


在您的代码中,发现了一个问题。根据您之前提供的`get_city_name_by_code()`方法,它返回的是城市名而不是省份名。因此,在使用该方法时,将无法获取到与省份编码对应的省份名。

如果您想获取省份名,可以尝试使用如下代码:

province_code = self.comboBox.itemData(index)
self.province_code = province_code
self.province_name = self.get_province_name_by_code(province_code)

然后,您需要实现一个名为`get_province_name_by_code()`的方法用于获取与省份编码对应的省份名。以下是一个示例代码:

def get_province_name_by_code(self, code):
    for data in self.data_model:
        if data['code'] == code:
            return data['name']
   
    return None

在这个示例中,假设`self.data_model`是一个包含字典的列表,每个字典都包含`code`和`name`两个键。我们遍历`self.data_model`列表,通过比较字典中的`code`和给定的省份编码,找到与之匹配的省份名并返回。如果找不到匹配的省份名,则返回`None`。

注意确保数据模型中的省份编码和给定的`province_code`类型相匹配。

希望这可以帮助您解决问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> 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.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-8 11:32:50 | 显示全部楼层
凊风 发表于 2024-05-08 11:32
1、首先,定义省名和城市名应该没有区别(因为编码是 ...


在您提供的代码中,我注意到了问题所在。在`get_city_name_by_code()`方法中,您使用了两次`for data in self.data_model`循环来查找与给定编码匹配的名称。这会导致在第一次循环时找到与编码匹配的字典,但它仅是字典本身,而不是其中的城市名称。

为了解决这个问题,您可以将`if data == code:`的判断改为`if data['code'] == code:`,并返回对应的城市名称。以下是修改后的示例代码:

  1. def get_city_name_by_code(self, code):
  2.     for data in self.data_model:
  3.         if data['code'] == code:
  4.             return data['name']
  5.     return None
复制代码


还请确保您的`self.data_model`是一个包含字典的列表,每个字典都包含一个`code`和一个`name`键,例如:
  1. self.data_model = [
  2.     {'code': '110000000000', 'name': '北京'},
  3.     {'code': '120000000000', 'name': '天津'},
  4.     # 其他省份...
  5. ]
复制代码


然后在使用该方法时,可以通过调用`get_city_name_by_code()`方法获取与指定编码对应的城市名称。例如:
  1. province_code = self.comboBox.itemData(index)
  2. self.province_code = province_code
  3. self.province_name = self.get_city_name_by_code(province_code)
  4. print('省名:', self.province_name)
复制代码


确保传递给`get_city_name_by_code()`的`province_code`与数据模型中的编码类型相匹配。

希望这样的修改能够解决问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> 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', '新疆维吾尔自治区')]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-8 11:39:40 | 显示全部楼层
凊风 发表于 2024-05-08 11:39
我的self.data_model=


很抱歉,由于您未提供`self.data_model`的具体内容,我无法准确地判断问题所在。

请确保`self.data_model`是一个正确格式的数据结构,例如列表或字典,并包含与编码对应的名称。以下是两个可能的示例:

如果`self.data_model`是一个字典,其中键为编码,值为城市名:
self.data_model = {
    '110000000000': '北京',
    '310000000000': '上海',
    '440100000000': '广州',
    ...
}

如果`self.data_model`是一个列表,其中每个元素是一个包含`code`和`name`键的字典:
self.data_model = [
    {'code': '110000000000', 'name': '北京'},
    {'code': '310000000000', 'name': '上海'},
    {'code': '440100000000', 'name': '广州'},
    ...
]

请根据您的实际数据格式进行相应修改,以确保`self.data_model`中的数据与您的需求一致。

如果问题仍然存在,请提供更多关于`self.data_model`的具体信息,以便我能够更好地帮助您解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> 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)?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-8 11:42:35 | 显示全部楼层
凊风 发表于 2024-05-08 11:42
我现有的self.data_model是这样的:
self.data_model ...


对于您提供的数据模型,请确保`self.data_model`是一个列表,其中每个元素是一个包含`code`和`name`键的字典,类似于以下示例:

self.data_model = [
    {'code': '110000000000', 'name': '北京'},
    {'code': '310000000000', 'name': '上海'},
    {'code': '440100000000', 'name': '广州'},
    ...
]

在`get_city_name_by_code()`方法中,您可以使用以下代码来查找与给定编码匹配的省份名称:

def get_city_name_by_code(self, code):
    for data in self.data_model:
        if data['code'] == code:
            return data['name']
    return None

请确保您的代码中省份编码和传递给`get_city_name_by_code()`的`code`参数类型相匹配。

然后,在您调用`get_city_name_by_code()`方法时,您应该能够获得与指定编码匹配的省份名称。例如:

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

请注意,以上代码是基于您提供的数据模型和代码片段进行的推测。如果问题仍然存在,请提供更多关于数据模型和相关代码的详细信息,以便我能够更准确地帮助您解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 04:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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