鱼C论坛

 找回密码
 立即注册
查看: 1211|回复: 5

[已解决]为什么会报错?怎么解决?

[复制链接]
发表于 2023-11-13 11:29:30 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 子飞鱼 于 2023-11-13 11:30 编辑

请各位大神给看看下面的代码为什么运行出错:
  1.     def  showFileDialog(self):
  2.         options = QFileDialog.Options()
  3.         options |= QFileDialog.DontUseNativeDialog
  4.         fileName, _ = QFileDialog.getSaveFileName(self, "保存", "", "文本文件 (*.txt)", options=options)
  5.         if fileName:
  6.             with open(fileName, 'w') as file:
  7.                 file.write(f'{self.ui.result.toPlainText()}')
  8.             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[str] = None, str = '', str = '', str = '', PySide6.QtWidgets.QFileDialog.Option = Default(QFileDialog.Options))

jiemian是我定义的类名字
最佳答案
2023-11-13 11:29:35
问题出在你调用 QFileDialog.getSaveFileName 方法时传入的参数类型不正确。根据报错信息, getSaveFileName 方法接受的第一个参数应该是 PySide6.QtWidgets.QWidget 类型,而你传入的是 jiemian ,这是你定义的类名。因此,你需要将 self 改为你的窗口类的实例对象,确保传入的参数类型正确。

你需要将代码修改为如下所示:

  1. fileName, _ = QFileDialog.getSaveFileName(self.window(), "保存", "", "文本文件 (*.txt)", options=options)
复制代码


这样就能正确调用 getSaveFileName 方法了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-13 11:29:35 | 显示全部楼层    本楼为最佳答案   
问题出在你调用 QFileDialog.getSaveFileName 方法时传入的参数类型不正确。根据报错信息, getSaveFileName 方法接受的第一个参数应该是 PySide6.QtWidgets.QWidget 类型,而你传入的是 jiemian ,这是你定义的类名。因此,你需要将 self 改为你的窗口类的实例对象,确保传入的参数类型正确。

你需要将代码修改为如下所示:

  1. fileName, _ = QFileDialog.getSaveFileName(self.window(), "保存", "", "文本文件 (*.txt)", options=options)
复制代码


这样就能正确调用 getSaveFileName 方法了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-13 11:31:27 | 显示全部楼层
根据您提供的代码和报错信息,问题出在调用 QFileDialog.getSaveFileName 方法时传入的参数类型错误。

QFileDialog.getSaveFileName 方法的第一个参数应该是 PySide6.QtWidgets.QWidget 类型,而您传入了自定义类 jiemianjiemian 可能是您定义的窗口类。

解决方法是将 self 作为第一个参数传入该方法,因为 self 应该是 PySide6.QtWidgets.QWidget 的实例。请确保您的窗口类继承自 PySide6.QtWidgets.QWidget

修改后的代码应该是这样的:
  1. fileName, _ = QFileDialog.getSaveFileName(self, "保存", "", "文本文件 (*.txt)", options=options)
复制代码

另外,您可能还需要确保已经正确导入了 QFileDialog 类。

请注意,我并不是 ChatGPT,而是基于浙大、清华等中国开源大模型的 AI 机器人。我会尽力回答您的问题,并给出全面、有条理的答案。如果您还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-13 11:46:33 | 显示全部楼层
isdkz 发表于 2023-11-13 11:29
问题出在你调用 QFileDialog.getSaveFileName 方法时传入的参数类型不正确。根据报错信息, getSaveFileNam ...

按照您的说方法进行了更改,还是有问题
具体的报错如下:
fileName, _ = QFileDialog.getSaveFileName(self.window(), "保存", "", "文本文件 (*.txt)", options=options)
                                              ^^^^^^^^^^^
AttributeError: 'jiemian' object has no attribute 'window'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-13 11:48:22 | 显示全部楼层
Mike_python小 发表于 2023-11-13 11:31
根据您提供的代码和报错信息,问题出在调用 QFileDialog.getSaveFileName 方法时传入的参数类型错误。

QFi ...

我目前的代码就是跟你提供的一样,但是报错。
您提到的  请确保您的窗口类继承自 PySide6.QtWidgets.QWidget。
我是这样的: from PySide6.QtWidgets import QFileDialog
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-13 12:05:15 | 显示全部楼层
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)
就没问题了。 我之前对于问题的描述有欠缺,导致各位大神给我的方案我直接套用还是不行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 09:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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