PyQt:QFileDialog在打开后直接关闭

时间:2014-04-03 09:16:41

标签: qt pyqt cross-platform ipython qfiledialog

我正在使用QFileDialoggetOpenFileNamegetSaveFileName),但有一种奇怪的行为:

  • 如果我直接从(ipython)shell调用它们,我没有问题
  • 如果我从小部件中调用它们:
    • 在mac 10.6中,它在打开对话框后关闭对话框(对话框" pop"然后关闭)
    • 在mac 10.6中,如果我使用QtGui.QFileDialog.DontUseNativeDialog
    • ,它可以正常工作
    • 在win xp中(在虚拟机中),它没有DontUseNativeDialog选项
    • 在win xp中,使用DontUseNativeDialog选项,对话框在打开后立即关闭
    • 在胜利7中,两者似乎都有效(别人做了测试,所以我没有看到它自己)

我的问题:

  • 一般情况下,对话框打开后会立即关闭的原因是什么?
  • 为什么会在某些情况下这样做而不是全部呢?
  • 我应该如何让它跨平台工作?

1 个答案:

答案 0 :(得分:1)

我发现这个问题来自与ipython及其--pylab启动选项的奇怪冲突。因此可以通过

来避免
  • 使用python xxxx.py
  • 直接执行代码
  • 或不使用pylab选项

在这两种情况下,应该手动启动qapplication:

qapp = QtGui.QApplication([])
my_app = MyQtAppWindow(...)
my_app.exec_()

但是,我仍然不知道为什么会发生冲突。

相关问题