求助QFileDialog
python吧
全部回复
仅看楼主
level 11
往事🐒
楼主
用Python和Pyqt5学习编程时,用QFileDialog尝试打开文件选择对话框,但有时候点一下按钮会重复弹出两次对话框,网上也有人出现类似的问题,但我自己没有能够解决问题,不知道该怎么办?
2024年03月28日 00点03分
1
level 1
🪼🪼
会不会是你connect了2次
2024年03月28日 05点03分
2
往事🐒
我在Qt Designer里没有用信号和槽,是在程序里connect的。我用的Stacked Widget, 两个page里都有用QFileDialog, 如果每次都是确定打开了文件则没有任何问题,如果是在同一个page里打开或取消也没有问题。一旦在一个page里点击 了取消,则到另一个page不管点确定还是取消都会又两次弹出文件框
2024年03月28日 07点03分
贴吧用户_0E8MtUX
@往事🐒
不一定是代码方面的,因为你说到“有时候”,不是必然发生的情况。也许是鼠标微动触点氧化,发送了两个信号给主机
2024年03月28日 07点03分
🪼🪼
@往事🐒
可以截一下打开文件夹那部分相关的代码,槽函数+信号(我不一定能解决,但是还有8u们)
2024年03月28日 07点03分
level 12
hitzsf
楼上说的对
2024年03月28日 05点03分
3
level 11
往事🐒
楼主
fileName, _ = QtWidgets.QFileDialog.getOpenFileName(None, choose_file_title, data_dir, file_filter)
2024年03月28日 07点03分
4
hitzsf
单独执行这句话, 肯定不会弹出两次
2024年03月28日 08点03分
往事🐒
@hitzsf
对啊,在一个页面点确定或取消都正常。但若在A页面点了取消,则在B页面不管选确定或取消都会再弹出选择框,主程序页面会退到后台
2024年03月28日 08点03分
level 11
往事🐒
楼主
2024年03月28日 08点03分
5
往事🐒
pageMaintain_Staff和pageMaintain_Dups是两个StackedWidgets中的页面,在切换页面选择文件时如果一个页面点了取消,另一个页面就会两次打开文件框
2024年03月28日 08点03分
hitzsf
@往事🐒
类写的也没问题, 关键是这个类咋用的
2024年03月28日 08点03分
hitzsf
@hitzsf
我猜 你这个 maintain_action 构造了两次,或者的 pageMaintain_Staff 及 StackedWidgets 调用了两次
2024年03月28日 08点03分
往事🐒
@hitzsf
Qt Designer的ui生成的相关代码如下图。
2024年03月28日 08点03分
level 7
起个名字😂😂
可以尝试使用其他ui库
2024年03月28日 08点03分
6
往事🐒
本来用的tkinter
现在想折腾一下pyqt5,就是想学学,没啥任务
2024年03月28日 08点03分
level 11
往事🐒
楼主
2024年03月28日 08点03分
7
hitzsf
这代码只是添加 action , 没有信号槽链接
2024年03月28日 08点03分
往事🐒
@hitzsf
Designer里我应该没有添加信号槽
2024年03月28日 09点03分
往事🐒
@hitzsf
只有选择取消的时候才会出问题。是我对选取消没有做判断?
2024年03月28日 09点03分
hitzsf
@往事🐒
不知道具体代码, 现在考虑 在 connnect 前 ,先 调用disconnect 试试
2024年03月28日 09点03分
level 11
往事🐒
楼主
2024年03月28日 09点03分
8
level 12
hitzsf
数据维护页面这块, 只要 ui.act_xxx 被 触发一次 就会调用一次函数,就会connnect 一次
2024年03月28日 09点03分
9
往事🐒
我的想法是触发一次只调用显示那个页面,并没有点击按钮获取文件,等到了那个页面点击按钮后才调用 QFileDialog
2024年03月28日 10点03分
hitzsf
@往事🐒
多弄几个 全局变量标志吧, 要么逻辑选择, 要么就disconnect
2024年03月28日 10点03分
往事🐒
@hitzsf
不应该把那几个connect放在class里,放在 --main--里就行
2024年03月28日 13点03分
hitzsf
@往事🐒
看你的具体要求的, 一般都是一次性搞定链接, 程序运行后就不再管信号槽, qt里面只有少数的几个情况,才会手动解除
2024年03月28日 13点03分
1