PyQt4 Выбор файла виджета - PullRequest
19 голосов
/ 07 июля 2010

Я хочу создать диалоговое окно QT4 (с использованием QT-конструктора), которое содержит часть, где должен быть выбран файл.

Теперь я знаю, что QFileDialog существует, и я могу программировать что-то, что делает то, что я хочу. Но могу ли я просто сделать это в конструкторе QT?

Есть ли какой-нибудь способ получить виджет "Выбор файла" в конструкторе QT? Или я помню эти кнопки с выбранным файлом в качестве заголовка и маленькой стрелкой, позволяющей пользователю выбрать другой файл с помощью QFileDialog?

Так есть ли готовое решение, или я должен запрограммировать его сам?

Ответы [ 3 ]

34 голосов
/ 10 июля 2010

Насколько я знаю, у Qt-конструктора нет доступного диалогового окна. Но вы можете легко сделать это с помощью нескольких строк кода.

Предполагается, что у вас есть простая кнопка pushButton и путь должен быть сохранен в lineEdit.

def selectFile():
    lineEdit.setText(QFileDialog.getOpenFileName())

pushButton.clicked.connect(selectFile)

[edit] Просто интересно, вы случайно не используете KDE? Если так, то вы можете использовать для этого KUrlRequester. Его можно легко настроить для поддержки чего угодно - от файлов до URL-адресов и каталогов.

13 голосов
/ 05 августа 2011

QFileDialog существует в QtGui. По крайней мере, в моей версии 4.4 и, возможно, гораздо раньше. Я думаю, что причина этого не в Designer, потому что он открывает свое собственное окно вместо того, чтобы быть виджетом для размещения в другом окне.

Документация от QTDesigner может быть лучше и, по крайней мере, намекнуть на его существование.

Создайте его экземпляр и выполните команду show. Это подходит и по умолчанию /.

import QtGui
self.fileDialog = QtGui.QFileDialog(self)
self.fileDialog.show()
2 голосов
/ 12 января 2019

Вы можете использовать метод getOpenFileName () в QFileDialog Класс.

QFileDialog.getOpenFileName () willвернуть путь к файлу и выбранный тип файла

Я получил это: ('C: /Users/Sathsara/Desktop/UI/Test/test.py', 'Все файлы (*)')

Чтобы получить только путь к файлу, используйте QFileDialog.getOpenFileName () [0]


Пример кода:

def selectFile():
   print(QFileDialog.getOpenFileName()[0])


dlg.locationBtn.clicked.connect(selectFile)
...