我正在尝试使用以下代码显示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_()
这里有两个问题:
永远不会发出directoryEntered
信号,至少我没有从脚本中获得任何输出(除了一些关于Samba支持的KDE警告等);实际上,没有来自我尝试连接的QFileDialog
类的信号在示例中发出。我做错了什么?
在此示例中,我将起始目录设置为$HOME
,但对话框将从/home
开始,并在列表中选择我的主目录,而不是直接在我的主目录中启动。我能以某种方式改变这种行为吗?
我正在使用Python 3.4.0和PyQt 4.10.4-2。
在使用@ekhumoro建议的非本机对话框时,会出现不这两个问题。