【发布时间】:2014-04-03 21:03:36
【问题描述】:
我正在使用 QFileDialog(getOpenFileName 和 getSaveFileName)但有一个奇怪的行为:
- 如果我直接从 (ipython) shell 调用它们,我没有问题
- 如果我从小部件调用它们:
- 在 mac 10.6 中,它会在打开对话框后立即关闭对话框(对话框“弹出”然后关闭)
- 在 mac 10.6 中,如果我使用
QtGui.QFileDialog.DontUseNativeDialog,它可以正常工作 - 在 win xp 中(在虚拟机中)它可以在没有
DontUseNativeDialog选项的情况下工作 - 在 win xp 中,使用
DontUseNativeDialog选项,对话框在打开后立即关闭 - 在 win 7 中,两者似乎都有效(其他人做了测试,所以我自己没有看到)
我的问题:
- 一般来说,对话框在打开后立即关闭的原因是什么?
- 为什么它会在某些情况下而不是全部情况下这样做?
- 我应该怎么做才能让它跨平台工作?
【问题讨论】:
-
您能否发布一个简单的工作示例来演示该行为,这样我们就可以排除常见的 Qt 错误(例如,因为您没有持有对对象的引用,所以对象被垃圾收集,或类似的)
-
试图做一个极简主义的例子,我发现它来自与 ipython 及其
--pylabstart 选项的奇怪冲突。可以通过直接执行代码 (python xxxx.py) 或不使用 pylab 选项来避免该问题。在这两种情况下,qapplication 都应该手动启动。 -
我不确定是否应该删除问题或对其进行编辑并在上面给出答案。解释为什么存在冲突可能仍然很有趣。
-
我不知道为什么会发生冲突,但我猜 pylab 对 Qt 的使用是把事情搞砸了。无论如何都值得留下这个问题,以防其他人有问题!
标签: qt pyqt cross-platform ipython qfiledialog