QFileDialog:没有信号发出,错误的起始目录

时间:2014-04-20 12:55:53

标签: pyqt signals-slots

我正在尝试使用以下代码显示QFileDialog

import os, sys

from PyQt4.QtGui import *

class MainWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        self._button = QPushButton('Test button')
        self._button.clicked.connect(self._onButtonClicked)

        self._layout = QHBoxLayout()
        self._layout.addWidget(self._button)
        self.setLayout(self._layout)

    def _onButtonClicked(self):
        self._dialog = QFileDialog(self, 'Select directory')
        self._dialog.setDirectory(os.getenv('HOME'))
        self._dialog.setFileMode(QFileDialog.Directory)
        self._dialog.directoryEntered.connect(self._onDirEntered)
        self._dialog.exec_()

    def _onDirEntered(self, directory):
        print("Entered directory: %s" % (directory))

if __name__ == "__main__":
    app = QApplication(sys.argv)

    mw = MainWindow()
    mw.show()

    app.exec_()

这里有两个问题:

  1. 永远不会发出directoryEntered信号,至少我没有从脚本中获得任何输出(除了一些关于Samba支持的KDE警告等);实际上,没有来自我尝试连接的QFileDialog类的信号在示例中发出。我做错了什么?

  2. 在此示例中,我将起始目录设置为$HOME,但对话框将从/home开始,并在列表中选择我的主目录,而不是直接在我的主目录中启动。我能以某种方式改变这种行为吗?

  3. 我正在使用Python 3.4.0和PyQt 4.10.4-2。

    在使用@ekhumoro建议的非本机对话框时,会出现这两个问题。

0 个答案:

没有答案