为什么会报错?怎么解决?
本帖最后由 子飞鱼 于 2023-11-13 11:30 编辑请各位大神给看看下面的代码为什么运行出错:
defshowFileDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getSaveFileName(self, "保存", "", "文本文件 (*.txt)", options=options)
if fileName:
with open(fileName, 'w') as file:
file.write(f'{self.ui.result.toPlainText()}')
print("选择的文件路径:", fileName)
其中:self.ui.result.toPlainText() 是我定义的一个QPlainText,作为输出计算结果的地方,想用上面的函数把输出再 QPlainText上的内容保存成txt文件
执行后 在fileName, _ = QFileDialog.getSaveFileName(self, "保存", "", "文本文件 (*.txt)", options=options) 这行报错,
报错内容是:
fileName, _ = QFileDialog.getSaveFileName(self, "保存", "", "文本文件 (*.txt)", options=options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'PySide6.QtWidgets.QFileDialog.getSaveFileName' called with wrong argument types:
PySide6.QtWidgets.QFileDialog.getSaveFileName(jiemian, str, str, str)
Supported signatures:
PySide6.QtWidgets.QFileDialog.getSaveFileName(PySide6.QtWidgets.QWidget, Optional = None, str = '', str = '', str = '', PySide6.QtWidgets.QFileDialog.Option = Default(QFileDialog.Options))
jiemian是我定义的类名字 问题出在你调用 QFileDialog.getSaveFileName 方法时传入的参数类型不正确。根据报错信息, getSaveFileName 方法接受的第一个参数应该是 PySide6.QtWidgets.QWidget 类型,而你传入的是 jiemian ,这是你定义的类名。因此,你需要将 self 改为你的窗口类的实例对象,确保传入的参数类型正确。
你需要将代码修改为如下所示:
fileName, _ = QFileDialog.getSaveFileName(self.window(), "保存", "", "文本文件 (*.txt)", options=options)
这样就能正确调用 getSaveFileName 方法了。 根据您提供的代码和报错信息,问题出在调用 QFileDialog.getSaveFileName 方法时传入的参数类型错误。
QFileDialog.getSaveFileName 方法的第一个参数应该是 PySide6.QtWidgets.QWidget 类型,而您传入了自定义类 jiemian。jiemian 可能是您定义的窗口类。
解决方法是将 self 作为第一个参数传入该方法,因为 self 应该是 PySide6.QtWidgets.QWidget 的实例。请确保您的窗口类继承自 PySide6.QtWidgets.QWidget。
修改后的代码应该是这样的:
fileName, _ = QFileDialog.getSaveFileName(self, "保存", "", "文本文件 (*.txt)", options=options)
另外,您可能还需要确保已经正确导入了 QFileDialog 类。
请注意,我并不是 ChatGPT,而是基于浙大、清华等中国开源大模型的 AI 机器人。我会尽力回答您的问题,并给出全面、有条理的答案。如果您还有其他问题,请随时提问。 isdkz 发表于 2023-11-13 11:29
问题出在你调用 QFileDialog.getSaveFileName 方法时传入的参数类型不正确。根据报错信息, getSaveFileNam ...
按照您的说方法进行了更改,还是有问题
具体的报错如下:
fileName, _ = QFileDialog.getSaveFileName(self.window(), "保存", "", "文本文件 (*.txt)", options=options)
^^^^^^^^^^^
AttributeError: 'jiemian' object has no attribute 'window' Mike_python小 发表于 2023-11-13 11:31
根据您提供的代码和报错信息,问题出在调用 QFileDialog.getSaveFileName 方法时传入的参数类型错误。
QFi ...
我目前的代码就是跟你提供的一样,但是报错。
您提到的请确保您的窗口类继承自 PySide6.QtWidgets.QWidget。
我是这样的: from PySide6.QtWidgets import QFileDialog isdkz 发表于 2023-11-13 11:29
问题出在你调用 QFileDialog.getSaveFileName 方法时传入的参数类型不正确。根据报错信息, getSaveFileNam ...
经过我调整,可以运行了
我的jiemian 是类的名字
用的是Qtdesigner做的程序画面
self.ui = QUiLoader().load('yusheji.ui')
'yusheji.ui 就i是我用Qtdesigner做的程序画面
所以将代码更改为:
fileName, _ = QFileDialog.getSaveFileName(self.ui.window(), "保存", "", "文本文件 (*.txt)", options=options)
就没问题了。 我之前对于问题的描述有欠缺,导致各位大神给我的方案我直接套用还是不行。
页:
[1]