凊风 发表于 2024-5-10 13:26:23

FishC 发表于 2024-5-10 13:12
这个错误通常是由于`DataFrame`构造函数参数不正确引起的。请确保`data_model`是一个合法的数据列表或 ...

这段代码不完整。。。。

FishC 发表于 2024-5-10 13:26:46

凊风 发表于 2024-05-10 13:26
这段代码不完整。。。。

非常抱歉,下面是完整的代码示例:

def setup_area_selection(self):
    # 设置combobox的点击事件,当点击时加载相应数据
    self.comboBox.clicked.connect(self.load_data_to_combobox)
    self.comboBox_2.clicked.connect(self.load_data_to_combobox_2)
    self.comboBox_3.clicked.connect(self.load_data_to_combobox_3)
    self.comboBox_4.clicked.connect(self.load_data_to_combobox_4)

def load_data_to_combobox(self):
    level = 2
    selected_code = self.comboBox.currentText()[:2]
    data = self.get_data(level, selected_code)
    self.comboBox_2.clear()
    self.comboBox_2.addItems(data)

def load_data_to_combobox_2(self):
    level = 3
    selected_code = self.comboBox_2.currentText()[:4]
    data = self.get_data(level, selected_code)
    self.comboBox_3.clear()
    self.comboBox_3.addItems(data)

def load_data_to_combobox_3(self):
    level = 4
    selected_code = self.comboBox_3.currentText()[:6]
    data = self.get_data(level, selected_code)
    self.comboBox_4.clear()
    self.comboBox_4.addItems(data)

def load_data_to_combobox_4(self):
    level = 5
    selected_code = self.comboBox_4.currentText()[:9]
    data = self.get_data(level, selected_code)
    self.comboBox_5.clear()
    self.comboBox_5.addItems(data)

def get_data(self, level, selected_code):
    # 根据level和selected_code查询数据库或其他数据源,获取相应的数据
    # 这里假设你有一个名为data_source的数据源,可以根据实际情况进行修改
    data = data_source.query(level, selected_code)
    return data

这段代码假设你的界面中有5个`QComboBox`分别命名为`comboBox`、`comboBox_2`、`comboBox_3`、`comboBox_4`、`comboBox_5`,并且你有一个名为`data_source`的数据源用来获取相应的数据。你需要根据实际情况进行修改和适配。

希望能帮到你!如果你还有其他问题,请随时提问。

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

凊风 发表于 2024-5-10 15:08:05

FishC 发表于 2024-5-10 13:26
非常抱歉,下面是完整的代码示例:




FishC,请问你是迷糊了吗?
Traceback (most recent call last):
   line 1117, in select_folder
    self.setup_area_selection()
line 1126, in setup_area_selection
    self.comboBox.clicked.connect(self.load_data_to_combobox)
    ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PySide6.QtWidgets.QComboBox' object has no attribute 'clicked'

FishC 发表于 2024-5-10 15:08:20

凊风 发表于 2024-05-10 15:08
FishC,请问你是迷糊了吗?
Traceback (most recent...

啊,抱歉,我犯了个错误。确实 `QComboBox` 并没有 `clicked` 信号。我混淆了 `QComboBox` 和 `QPushButton` 的用法。

如果你想要在点击 `QComboBox` 时触发某个操作,可以使用 `activated` 信号。

下面是修正后的代码示例:

def setup_area_selection(self):
    self.comboBox.activated.connect(self.load_data_to_combobox)

def load_data_to_combobox(self):
    # 在这里编写加载数据到 QComboBox 的逻辑
    pass

这样,当用户在 `QComboBox` 中选择一个选项时,`load_data_to_combobox` 函数就会被调用。你可以在这个函数内部编写将数据加载到 `QComboBox` 的逻辑。

对于固定资产管理系统,你还需要考虑存储和管理资产数据的方式,以及其他的交互界面和功能。希望以上代码对你有所帮助!如果还有其他问题,请随时提问。

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

凊风 发表于 2024-5-10 16:55:49

FishC 发表于 2024-5-10 15:08
啊,抱歉,我犯了个错误。确实 `QComboBox` 并没有 `clicked` 信号。我混淆了 `QComboBox` 和 `QPushBu ...

现有代码如下:
self.comboboxes = [self.comboBox, self.comboBox_2, self.comboBox_3,
                           self.comboBox_4, self.comboBox_5]
self.setup_area_selection(self.comboboxes, self.Region_file)

    def setup_area_selection(self, comboboxes, data_model):
      levels = len(comboboxes)
      data_model = pd.read_excel(self.Region_file)
      df = pd.DataFrame(data_model)

      filtered_data = df == 1]
      self.comboBox.setEnabled(True)
      self.comboBox.clear()
      self.comboBox.addItem("请选择省名:")      
      for index, row in filtered_data.iterrows():
            name = row['名称']
            code = row['区划代码']
            self.comboBox.addItem(name, code)

能不能实现当self.comboBox进行了选择时,把self.comboBox所选择的“名称”储存下来,

然后让self.progressBar显示出来,self.progressBar的百分比居中显示,self.progressBar

从左到右开始滚动。

FishC 发表于 2024-5-10 16:56:26

凊风 发表于 2024-05-10 16:55
现有代码如下:
self.comboboxes =
self.setup_are ...

当使用 `QComboBox` 进行选择时,我们可以通过 `currentIndexChanged` 信号来获取选择的名称并将其存储下来。然后,我们可以启用 `QProgressBar` 并根据需要配置它的样式和滚动行为。以下是一个示例代码:

from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QComboBox, QProgressBar
from PySide6.QtCore import Qt


class AssetManagementSystem(QWidget):
    def __init__(self):
      super().__init__()
      self.setWindowTitle("资产管理系统")
      self.layout = QVBoxLayout()
      self.comboBox = QComboBox()
      self.progressBar = QProgressBar()
      self.setup_area_selection()

      self.comboBox.currentIndexChanged.connect(self.on_combobox_selection)
      
      self.layout.addWidget(self.comboBox)
      self.layout.addWidget(self.progressBar)
      self.setLayout(self.layout)
   
    def setup_area_selection(self):
      self.comboBox.addItem("请选择省名:")
      self.comboBox.addItem("省名1")
      self.comboBox.addItem("省名2")
      # 添加其他省名...
   
    def on_combobox_selection(self, index):
      if index > 0:# 当选择了某个省名
            selected_name = self.comboBox.itemText(index)
            print(f"选择的名称是:{selected_name}")
            self.progressBar.setRange(0, 0)# 设置范围为,即无限制
            self.progressBar.setAlignment(Qt.AlignCenter)# 文字居中显示
            self.progressBar.setStyleSheet("""
                QProgressBar {
                  text-align: center;
                }
               
                QProgressBar::chunk {
                  background-color: #2196F3;
                }
            """)
            self.progressBar.setValue(0)# 初始值为0
            self.progressBar.setMaximumWidth(200)# 设置进度条的最大宽度
            self.progressBar.show()


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

这是一个简单的示例,当选择了某个省名后,会在控制台打印所选名称,并显示一个带有居中文本和从左到右滚动的无限制进度条。你可以根据实际需求进行修改和调整。

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

凊风 发表于 2024-5-10 17:00:43

FishC 发表于 2024-5-10 16:56
当使用 `QComboBox` 进行选择时,我们可以通过 `currentIndexChanged` 信号来获取选择的名称并将其存储 ...

报错:
Traceback (most recent call last):
   line 1116, in select_folder
    self.setup_area_selection(self.comboboxes, self.Region_file)
line 1136, in setup_area_selection
    self.comboBox.currentIndexChanged.connect(self.on_combobox_selection)
                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Region_Select_Window' object has no attribute 'on_combobox_selection'

FishC 发表于 2024-5-10 17:02:02

凊风 发表于 2024-05-10 17:00
报错:
Traceback (most recent call last):
   lin ...

抱歉,看来我没有给出完整的代码示例。请尝试在你的类中添加一个 `on_combobox_selection` 方法来处理 `currentIndexChanged` 信号。下面是一个更新的代码示例:

self.comboBox.currentIndexChanged.connect(self.on_combobox_selection)

def on_combobox_selection(self, index):
    selected_name = self.comboBox.itemText(index)
    # 在这里处理所选名称的逻辑

    # 显示进度条
    self.progressBar.setValue(0)
    self.progressBar.setMaximum(100)
    self.progressBar.setAlignment(QtCore.Qt.AlignCenter)
    self.progressBar.show()

    # 启动定时器以滚动进度条
    self.timer = QtCore.QTimer()
    self.timer.timeout.connect(self.scroll_progress_bar)
    self.timer.start(100)# 每100毫秒滚动一次

def scroll_progress_bar(self):
    value = self.progressBar.value()
    if value >= 100:
      self.timer.stop()
      self.progressBar.hide()
    else:
      self.progressBar.setValue(value + 1)

请注意,在以上示例中,我们假设你已经定义了一个名为 `self.progressBar` 的进度条小部件。如果没有,请根据你的需求进行调整。

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

凊风 发表于 2024-5-10 22:09:12

FishC 发表于 2024-5-10 13:26
非常抱歉,下面是完整的代码示例:




请问这报错什么意思:
Traceback (most recent call last):
line 1193, in on_combobox_selection
    data = self.get_data(level, selected_code)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
line 1158, in get_data
    data = data_model.query(level, selected_code)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: DataFrame.query() takes 2 positional arguments but 3 were given

FishC 发表于 2024-5-10 22:09:36

凊风 发表于 2024-05-10 22:09
请问这报错什么意思:
Traceback (most recent call...

这个错误提示意味着调用了 `DataFrame.query()` 方法时传递的参数数量不正确。

`DataFrame.query()` 方法的使用方式是 `query(expr, inplace=False)`, 其中 `expr` 是查询表达式,`inplace` 表示是否直接在原数据上进行修改,默认为 `False`。

根据你提供的错误信息,看起来你在调用 `query()` 方法时传递了三个参数,但该方法只需要两个参数。请检查你的代码并确保在使用 `query()` 方法时只传递两个参数。例如:

`python
data_model.query('level == @level and code == @selected_code')`

在这个例子中,`level` 和 `selected_code` 是变量,你需要根据实际情况将它们替换为你的数据。

希望这能帮助解决问题!

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

凊风 发表于 2024-5-11 18:14:58

FishC 发表于 2024-5-10 22:09
这个错误提示意味着调用了 `DataFrame.query()` 方法时传递的参数数量不正确。

`DataFrame.query()` ...

请问这是什么问题?
Traceback (most recent call last):
File "D:\Python\pythonProject\Ylqx20240509\Ylqx2024050903.py", line 24, in <module>
    import pandas as pd
File "D:\Python\pythonProject\.venv\Lib\site-packages\pandas\__init__.py", line 29, in <module>
    raise ImportError(
ImportError: Unable to import required dependencies:
numpy: Error importing numpy: you should not try to import numpy from
      its source directory; please exit the numpy source tree, and relaunch
      your python interpreter from there.

FishC 发表于 2024-5-11 18:15:12

凊风 发表于 2024-05-11 18:14
请问这是什么问题?
Traceback (most recent call la ...

这个错误提示意味着在导入 `pandas` 库时出现了问题,具体是由于 `numpy` 的导入问题导致的。

根据错误提示,你应当退出 `numpy` 的源代码目录,然后重新启动 Python 解释器来解决导入问题。这是因为导入 `numpy` 应该在非源代码目录下进行,否则会导致问题。

你可以尝试以下步骤来解决该问题:
1. 关闭当前的 Python 解释器。
2. 确保你在 `numpy` 的源代码目录之外。
3. 重新启动 Python 解释器。
4. 导入 `pandas` 库并检查是否仍然存在导入问题。

如果问题仍然存在,你可能需要检查你的环境配置,确保 `numpy` 安装正确,并且在导入前没有任何问题,例如依赖项或安装路径的冲突。

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

凊风 发表于 2024-5-13 21:16:49

FishC 发表于 2024-5-8 20:44
明白了,以下是修改后的代码:




我是这样写的:
level = 2
code_length = 2
selected_code = self.comboBox.currentData()                     
filtered_data = df == level and df['区划代码'].astype(str).str[:code_length] == str(selected_code)[:code_length]]

但是报错:
Traceback (most recent call last):
   line 1199, in on_combobox_selection
    filtered_data = df == level and df['区划代码'].astype(str).str[:code_length] == str(selected_code)[:code_length]]
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\.venv\Lib\site-packages\pandas\core\generic.py", line 1576, in __nonzero__
    raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

FishC 发表于 2024-5-13 21:17:07

凊风 发表于 2024-05-13 21:16
我是这样写的:
level = 2
code_length = 2
select ...

这个错误是由于你在布尔表达式中使用了 `and` 运算符而导致的。

在 pandas 中,布尔索引需要使用 `&` 运算符代替 `and` 运算符。此外,对于比较操作,应该使用 `==` 而不是 `=`。

你可以按照以下方式修改你的代码:

filtered_data = df[(df == level) & (df.astype(str) == str(selected_code))]

这样就能正确地进行逻辑与和相等比较运算。

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

凊风 发表于 2024-5-13 21:19:38

FishC 发表于 2024-5-13 21:17
这个错误是由于你在布尔表达式中使用了 `and` 运算符而导致的。

在 pandas 中,布尔索引需要使用 `& ...

报错:
Traceback (most recent call last):
File "D:\PycharmProjects\.venv\Lib\site-packages\pandas\core\ops\array_ops.py", line 362, in na_logical_op
    result = op(x, y)
             ^^^^^^^^
File "D:\PycharmProjects\.venv\Lib\site-packages\pandas\core\roperator.py", line 54, in rand_
    return operator.and_(right, left)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unsupported operand type(s) for &: 'int' and 'str'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "D:\PycharmProjects\.venv\Lib\site-packages\pandas\core\ops\array_ops.py", line 376, in na_logical_op
    result = libops.scalar_binop(x, y, op)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "ops.pyx", line 210, in pandas._libs.ops.scalar_binop
File "D:\PycharmProjects\.venv\Lib\site-packages\pandas\core\roperator.py", line 54, in rand_
    return operator.and_(right, left)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unsupported operand type(s) for &: 'bool' and 'str'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "D:\PycharmProjects\Ylqx20240509\Ylqx2024050903.py", line 1199, in on_combobox_selection
    filtered_data = df == level &
                                 ^^^^^^^
File "D:\PycharmProjects\.venv\Lib\site-packages\pandas\core\ops\common.py", line 76, in new_method
    return method(self, other)
         ^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\.venv\Lib\site-packages\pandas\core\arraylike.py", line 74, in __rand__
    return self._logical_method(other, roperator.rand_)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\.venv\Lib\site-packages\pandas\core\series.py", line 6121, in _logical_method
    res_values = ops.logical_op(lvalues, rvalues, op)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\.venv\Lib\site-packages\pandas\core\ops\array_ops.py", line 454, in logical_op
    res_values = na_logical_op(lvalues, rvalues, op)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\.venv\Lib\site-packages\pandas\core\ops\array_ops.py", line 385, in na_logical_op
    raise TypeError(
TypeError: Cannot perform 'rand_' with a dtyped array and scalar of type

FishC 发表于 2024-5-13 21:19:52

凊风 发表于 2024-05-13 21:19
报错:
Traceback (most recent call last):
File ...

这个错误是由于你在逻辑运算中使用了位运算符 `&`,而应该使用逻辑运算符 `and`。此外,还要注意不同数据类型之间的比较可能会导致错误。

请尝试以下代码:

filtered_data = df[(df == level) & (df.astype(str) == str(selected_code))]

在这里,我们使用了逻辑运算符 `and`,并将每个条件括在括号中以确保正确的比较和逻辑运算。同时,我们使用 `astype(str)` 将数据框中的值转换为字符串,以避免不同数据类型之间的比较错误。

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

凊风 发表于 2024-5-13 21:38:00

FishC 发表于 2024-5-13 21:19
这个错误是由于你在逻辑运算中使用了位运算符 `&`,而应该使用逻辑运算符 `and`。此外,还要注意不同数 ...

我这样写:
filtered_data = df[(df == level) & (df.astype(str).str[:code_length] == str(selected_code)[:code_length])]

但是报错:
Traceback (most recent call last):
   line 1199, in on_combobox_selection
    filtered_data = df[(df == level) & (df.astype(str).str[:code_length] == str(selected_code)[:code_length])]
                                        ^^^^^^^^^^^^^^^^^^
File "D:\PycharmProjects\.venv\Lib\site-packages\pandas\core\generic.py", line 6296, in __getattr__
    return object.__getattribute__(self, name)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'DataFrame' object has no attribute 'str'. Did you mean: 'std'?

FishC 发表于 2024-5-13 21:38:18

凊风 发表于 2024-05-13 21:38
我这样写:
filtered_data = df[(df == level) & (df ...

这个错误是由于你在DataFrame对象上使用了str属性,而DataFrame没有str属性。

如果你想在DataFrame中进行字符串比较,可以使用`.astype(str)`将列转换为字符串类型,然后再进行比较:

filtered_data = df[(df == level) & (df.astype(str) == str(selected_code))]

如果你想对DataFrame中的某个特定列进行字符串比较,可以使用`.str`属性:

filtered_data = df.astype(str) == str(selected_code)]

请注意将 `column_name` 替换为你实际的列名。

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

凊风 发表于 2024-5-13 22:28:52

FishC 发表于 2024-5-13 21:38
这个错误是由于你在DataFrame对象上使用了str属性,而DataFrame没有str属性。

如果你想在DataFrame ...

现有123.txt内容如下:
级别   区划代码            名称
1        110000000000        北京市
2        110100000000        市辖区
3        110101000000        东城区
4        110101001000        东华门街道
5        110101001001        多福巷社区居委会
5        110101001002        银闸社区居委会
5        110101001005        东厂社区居委会
5        110101001006        智德社区居委会
5        110101001007        南池子社区居委会
5        110101001009        灯市口社区居委会
5        110101001010        正义路社区居委会
5        110101001013        台基厂社区居委会
5        110101001014        韶九社区居委会
5        110101001015        王府井社区居委会
4        110101002000        景山街道

请问能不能逐条读取并存入E:\Temp\123.xlsx中,列名就是“级别”、‘区划代码’和“名称”。

FishC 发表于 2024-5-13 22:29:15

凊风 发表于 2024-05-13 22:28
现有123.txt内容如下:
级别   区划代码         ...

可以使用`pandas`库来读取文本文件,并将数据存入Excel文件中。下面是示例代码:

import pandas as pd

# 读取文本文件
df = pd.read_csv('123.txt', sep='\t', header=0)

# 存入Excel文件
df.to_excel('E:/Temp/123.xlsx', index=False)

这段代码首先使用`read_csv`函数从文本文件中读取数据,并指定分隔符为制表符(`\t`)。然后,使用`to_excel`函数将数据存入Excel文件中,其中`index=False`表示不将索引写入Excel文件。

运行以上代码后,你将在`E:/Temp/`目录下找到名为`123.xlsx`的Excel文件,其中包含从文本文件中读取的数据,并按照指定的列名进行了存储。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: 1 2 3 4 5 6 7 [8] 9 10 11 12
查看完整版本: 资产管理系统求教~~