鱼C论坛

 找回密码
 立即注册
查看: 2742|回复: 6

[已解决]请求大佬帮助,关于getopenfilename延迟返回

[复制链接]
发表于 2020-11-11 08:49:58 | 显示全部楼层 |阅读模式

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

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

x
我使用pyqt进行了软件界面的开发,在进行文件打开时调用了 PyQt5.QtWidgets.QFileDialog.getOpenFileName()函数,用于返回用户打开的文件名称,后续进行文件读取处理。
但是使用这个函数打开文件过程中总是出现长时间延迟(偶尔会没有延迟,直接就返回文件名了)延迟时间达到了6-8s,已经严重影响了正常使用。
我在网上搜索了一下,没有发现类似问题的描述和处理意见。
不知道有没有大佬能够帮忙看一下,是什么原因导致的。
fileopen = QFileDialog.getOpenFileName(None, "打开数据文件", filter='*.da')
最佳答案
2020-11-11 09:09:54
Stack Flow上面有https://stackoverflow.com/questions/21545319/qt-5-2-0-getopenfilename-slow。大致意思,就是不要用debug,还有用下面的代码,直接加载那个dll。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-11 09:09:54 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
Stack Flow上面有https://stackoverflow.com/questions/21545319/qt-5-2-0-getopenfilename-slow。大致意思,就是不要用debug,还有用下面的代码,直接加载那个dll。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-11 09:58:31 | 显示全部楼层
没用过pyqt
QFileDialog.getOpenFileName(None, "打开数据文件", filter='*.da')
查询了下帮助文档,感觉你第一个参数设置有误,你设置为空让它调用默认值试试看?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-11 10:02:59 | 显示全部楼层
笨鸟学飞 发表于 2020-11-11 09:58
没用过pyqt
QFileDialog.getOpenFileName(None, "打开数据文件", filter='*.da')
查询了下帮助文档,感觉 ...

多谢您的回复!

默认值就是None,我将这个值设置为已经打开的窗口也可以,也就是用窗口的self。
主要问题是打开的速度,经常出现延迟,偶尔就没有问题了。非常奇怪,这样体验就太差了!
今天开机后就没事了,瞬间打开,昨天怎么弄都不行。
现在想的关键是希望找到原因,才能去处理。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-11 11:00:38 | 显示全部楼层
jackinging 发表于 2020-11-11 10:02
多谢您的回复!

默认值就是None,我将这个值设置为已经打开的窗口也可以,也就是用窗口的self。

怎么我查的默认值是0?
我感觉一般不太可能会延迟太多的吧,python效率低也不可能低到那种程度吧?
要么试试多线程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-11 11:11:48 | 显示全部楼层
本帖最后由 jackinging 于 2020-11-11 14:57 编辑
笨鸟学飞 发表于 2020-11-11 11:00
怎么我查的默认值是0?
我感觉一般不太可能会延迟太多的吧,python效率低也不可能低到那种程度吧?
要 ...


是啊,不应该这么延迟的,但是实际就是这样。
    def getOpenFileName(self, parent=None, caption='', directory='', filter='', initialFilter='', options, QFileDialog_Options=None, QFileDialog_Option=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__
        """ getOpenFileName(parent: QWidget = None, caption: str = '', directory: str = '', filter: str = '', initialFilter: str = '', options: Union[QFileDialog.Options, QFileDialog.Option] = 0) -> Tuple[str, str] """
        pass
这个是原型函数的注解,没有实现方式(我查了说是c编的,这里不显示源代码)。
多线程怎么处理还真不太懂,这里的处理只是返回打开的文件名,不处理其他问题。(也不处理文件,后面处理文件的速度没有问题。)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-12 08:44:06 | 显示全部楼层
2269099035 发表于 2020-11-11 09:09
Stack Flow上面有https://stackoverflow.com/questions/21545319/qt-5-2-0-getopenfilename-slow。大致意思 ...

不好意思,昨天没看到您发的帖子,您的解答比较靠近真是情况,多谢!
后来我也是通过网络搜索,找到了解决方案,就是在参数设置中增加 , options=DontUseNativeDialog的参数,就不会延迟太久了,速度可以接受了。
但还是要写您的,多谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 21:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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