def handleCalc2(self): filePath, _ = QFileDialog.getOpenFileName( self.ui, # 父窗口对象 "选择你要上传的文件", # 标题 r"D:\桌面\PY-ljh\数据分析-机器学习", # 起始目录 '文件类型(*.xlsx *.xls *.csv),' ) # 放上轮廓图路径
时间: 2024-02-10 12:16:13 浏览: 161
看起来你的代码中似乎没有明显的错误。不过,你的文件类型过滤器字符串似乎有点问题。应该把文件类型和描述分开,用双分号 `;;` 分隔,而不是逗号 `,`。修改后的代码如下:
```python
def handleCalc2(self):
filePath, _ = QFileDialog.getOpenFileName(
self.ui, # 父窗口对象
"选择你要上传的文件", # 标题
r"D:\桌面\PY-ljh\数据分析-机器学习", # 起始目录
"Excel 文件(*.xlsx *.xls);;CSV 文件(*.csv)" # 文件类型过滤器
)
# 放上轮廓图路径
```
在这个例子中,过滤器包含两个文件类型,分别是 Excel 文件和 CSV 文件,描述分别是 `Excel 文件(*.xlsx *.xls)` 和 `CSV 文件(*.csv)`,用双分号 `;;` 分隔。
相关问题
filePath, _ = QFileDialog.getOpenFileName( TypeError: 'PySide2.QtWidgets.QFileDialog.getOpenFileName' called with wrong argument types: PySide2.QtWidgets.QFileDialog.getOpenFileName(Ui_Form2, str, str, str) Supported signatures: PySide2.QtWidgets.QFileDialog.getOpenFileName(typing.Optional[PySide2.QtWidgets.QWidget] = None, str = '', str = '', str = '', PySide2.QtWidgets.QFileDialog.Options = Default(QFileDialog.Options)) Process finished with exit code 0
这个错误是因为你在调用 `QFileDialog.getOpenFileName()` 函数时传入了错误的参数类型。正确的调用方式是:
```python
filePath, _ = QFileDialog.getOpenFileName(None, "选择文件", "", "All Files (*);;Text Files (*.txt)")
```
其中第一个参数是父窗口,可以传入 `None`;第二个参数是对话框标题;第三个参数是默认打开的目录,可以传入空字符串;第四个参数是文件过滤器,用来限制用户只能选择哪些类型的文件。以上示例中的文件过滤器允许用户选择所有类型的文件,以及扩展名为 `.txt` 的文本文件。
希望这可以帮助你解决问题。
from openpyxl import load_workbook, Workbook from openpyxl.styles import PatternFill class ExcelMerger: def __init__(self, input_path, output_path): self.input_path = input_path self.output_path = output_path self.workbook = Workbook() self.sheet = self.workbook.active self.fill = PatternFill(fill_type='solid', start_color='FFFFFF', end_color='FFFFFF') self.row_index = 1 def merge(self): for filename in os.listdir(self.input_path): if not filename.endswith('.xlsx'): continue filepath = os.path.join(self.input_path, filename) workbook = load_workbook(filepath, data_only=True) if '功能点拆分表' not in workbook.sheetnames: continue sheet = workbook['功能点拆分表'] for row in sheet.rows: self.sheet.row_dimensions[self.row_index].height = sheet.row_dimensions[row[0].row].height for cell in row: if cell.value is not None: self.sheet.cell(row=self.row_index, column=cell.column, value=cell.value) self.sheet.cell(row=self.row_index, column=cell.column).fill = cell.fill else: self.sheet.cell(row=self.row_index, column=cell.column).fill = self.fill self.row_index += 1 self.workbook.save(self.output_path)上述修改后的代码仍然出现TypeError: unhashable type: 'StyleProxy'的错误,怎么解决
这个问题通常是由于样式对象(Style)是不可哈希的导致的。在这种情况下,你需要将样式对象转换为可哈希的对象,或者使用其他数据结构来代替字典。
你可以尝试将样式对象转换为字符串,然后将字符串作为键来使用。例如,可以使用`str(style)`来获取样式对象的字符串表示形式,并将其用作字典的键,如下所示:
```
cell_style = {}
...
if cell.has_style:
cell_style[cell.coordinate] = str(cell.style)
...
```
这样就可以避免`TypeError: unhashable type: 'StyleProxy'`错误。
当然,这只是一种解决方案,具体如何修改代码需要根据具体情况而定。
阅读全文