#python #pyqt #qfiledialog
#python #pyqt #qfiledialog
Вопрос:
Я работаю над курсовой работой по информатике и не могу понять, почему фрагмент кода не работает. Я пытаюсь подключить кнопку, которую я создал в PyQt4, чтобы при ее нажатии отображался диалог каталога:
self.Browse_Button_1 = QtGui.QToolButton(self.tab)
self.Browse_Button_1.setGeometry(QtCore.QRect(360, 30, 61, 20))
self.Browse_Button_1.setObjectName(_fromUtf8("Browse_Button_1"))
file = str(QFileDialog.getExistingDirectory(self, "Select Directory"))
self.Browse_Button_1.clicked.connect(self, file)
Однако каждый раз, когда я запускаю программу, я просто получаю эту ошибку:
Traceback (most recent call last):
File "D:NEA ProjectNEA_UI.py", line 194, in <module>
ui = Ui_Dialog()
File "D:NEA ProjectNEA_UI.py", line 30, in __init__
self.setupUi(self)
File "D:NEA ProjectNEA_UI.py", line 55, in setupUi
file = str(QFileDialog.getExistingDirectory(self, "Select Directory"))
NameError: name 'QFileDialog' is not defined
Буду признателен за любую помощь в решении проблемы.
Ответ №1:
QFileDialog
находится в модуле QtGui, поэтому вам нужно добавить его в начало вашей строки, например:
file = str(QtGui.QFileDialog.getExistingDirectory(self, "Select Directory"))
В качестве альтернативы, если вы хотите использовать QFileDialog
без QtGui
переднего плана, вам необходимо импортировать его из модуля (в верхней части вашего файла) с:
from PyQt4.QtGui import QFileDialog
Или для Qt5 (обратите внимание, что в Qt5 QFileDialog
перемещено в QtWidgets
модуль):
from PyQt5.QtWidgets import QFileDialog
Комментарии:
1. Я попробовал ваше решение, и, к сожалению, оно выдает следующую ошибку. Я использую школьный компьютер, так что, возможно, ему просто не хватает какой-то библиотеки.
2.
code
Трассировка (последний последний вызов): файл «D:NEA ProjectNEA_UI.py «, строка 161, в файле <module> ui.setupUi(диалоговое окно) «D:NEA ProjectNEA_UI.py «, строка 49, в файле setupUi = str(QFileDialog.getExistingDirectory(self, «Выбрать каталог»)) Ошибка типа: QFileDialog.getExistingDirectory(родительский элемент QWidget = Нет, заголовок str =», каталог str =», QFileDialog. Параметры параметры = QFileDialog. ShowDirsOnly): аргумент 1 имеет неожиданный тип ‘Ui_Dialog’3.
Traceback (most recent call last): File "D:NEA ProjectNEA_UI.py", line 161, in <module> ui.setupUi(Dialog) File "D:NEA ProjectNEA_UI.py", line 49, in setupUi file = str(QFileDialog.getExistingDirectory(self, "Select Directory")) TypeError: QFileDialog.getExistingDirectory(QWidget parent=None, str caption='', str directory='', QFileDialog.Options options=QFileDialog.ShowDirsOnly): argument 1 has unexpected type 'Ui_Dialog'
4. @SirEctoplasm эта ошибка связана с типом
self
параметра. Это должен быть тип Qt (QWidget
), но это не так. Чтоself
в вашем примере?5. Трассировка (последний последний вызов): файл «D:NEA ProjectNEA_UI.py «, строка 161, в файле <module> ui.setupUi(диалоговое окно) «D:NEA ProjectNEA_UI.py «, строка 49, в файле setupUi = str(QFileDialog.getExistingDirectory(self, «Выбрать каталог»)) Ошибка типа: QFileDialog.getExistingDirectory(родительский элемент QWidget = Нет, заголовок str =», каталог str =», QFileDialog. Параметры параметры = QFileDialog. ShowDirsOnly): аргумент 1 имеет неожиданный тип ‘Ui_Dialog’