凊风 发表于 2024-4-18 08:35:22

资产管理系统求教~~

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

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

FishC 发表于 2024-4-18 08:35:43

当然可以用Pyside6写一个固定资产管理系统!Pyside6是一个跨平台的GUI工具包,可以帮助您创建漂亮且功能强大的用户界面。

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

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

class AssetManagementSystem(QWidget):
    def __init__(self):
      super().__init__()
      self.setWindowTitle('资产管理系统')
      
      layout = QVBoxLayout()
      
      asset_label = QLabel('资产名称:')
      self.asset_input = QLineEdit()
      layout.addWidget(asset_label)
      layout.addWidget(self.asset_input)
      
      btn_add_asset = QPushButton('添加资产')
      btn_add_asset.clicked.connect(self.add_asset)
      layout.addWidget(btn_add_asset)
      
      self.setLayout(layout)
   
    def add_asset(self):
      asset_name = self.asset_input.text()
      # 在这里实现添加资产的逻辑
      
      self.asset_input.clear()

if __name__ == '__main__':
    app = QApplication([])
    window = AssetManagementSystem()
    window.show()
    app.exec()

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

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

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

凊风 发表于 2024-5-7 15:25:40

FishC 发表于 2024-4-18 08:35
当然可以用Pyside6写一个固定资产管理系统!Pyside6是一个跨平台的GUI工具包,可以帮助您创建漂亮且功能强 ...

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

请问如何把与code对应的name取出来?

FishC 发表于 2024-5-7 15:25:48

凊风 发表于 2024-05-07 15:25
self.data_model.append((code, name))

请问如何把 ...

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

def get_name_by_code(self, code):
    for data in self.data_model:
      if data == code:
            return data
      
    return None

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

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

name = self.get_name_by_code('ABC123')
if name:
    print('与该code对应的name是:', name)
else:
    print('未找到与该code对应的name')

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

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

凊风 发表于 2024-5-7 15:30:16

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

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

但是报错:
Traceback (most recent call last):
line 1187, in on_province_changed
    self.province_name = self.data_model
                         ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
TypeError: list indices must be integers or slices, not NoneType

FishC 发表于 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

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

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

凊风 发表于 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”这个文件名?

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

凊风 发表于 2024-5-8 10:52:09

FishC 发表于 2024-5-7 15:30
根据您提供的代码和错误信息,可以看出问题出现在`self.data_model`赋值给`self.province_name`上面。 ...

现有self.data_model: [('110000000000', '北京市'), ('120000000000', '天津市')],
请问要如何取出与编码对应的城市名?

FishC 发表于 2024-5-8 10:52:17

凊风 发表于 2024-05-08 10:52
现有self.data_model: ,
请问要如何取出与编码对应的 ...

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

以下是一个示例代码:

def get_city_name_by_code(self, code):
    if code in self.data_model:
      return self.data_model
    else:
      return None

# 使用示例
city_name = self.get_city_name_by_code("ABC123")
if city_name:
    print(f"与该编码对应的城市名是:{city_name}")
else:
    print("未找到与该编码对应的城市名")

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

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

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

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

凊风 发表于 2024-5-8 11:22:49

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

现有self.data_model,
能不能直接用命令直接从self.data_model中取出与code对应的name?

FishC 发表于 2024-5-8 11:23:01

凊风 发表于 2024-05-08 11:22
现有self.data_model,
能不能直接用命令直接从self. ...

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

def get_name_by_code(self, code):
    if code in self.data_model:
      return self.data_model
    else:
      return None

# 使用示例
name = self.get_name_by_code('ABC123')
if name:
    print('与该code对应的name是:', name)
else:
    print('未找到与该code对应的name')

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

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

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

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

凊风 发表于 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....

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

凊风 发表于 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.....

FishC 发表于 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:`,并返回对应的城市名称。以下是修改后的示例代码:

def get_city_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': '110000000000', 'name': '北京'},
    {'code': '120000000000', 'name': '天津'},
    # 其他省份...
]

然后在使用该方法时,可以通过调用`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)

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

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

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

凊风 发表于 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', '新疆维吾尔自治区')]

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

凊风 发表于 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)?

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 资产管理系统求教~~