Используйте QFileDialog, чтобы выбрать каталог и импортировать его в скрипт Python

Я действительно теряюсь здесь. Моя установка выглядит следующим образом: я создаю графический интерфейс с помощью QtDesigner и получаю ui.py, Я получил обертку, где я делаю свои модификации для сигналов под названием ui_module.py, Тогда есть моя основная программа, куда я импортирую ui_module.py, В этой основной программе я хочу, чтобы строка каталога использовалась в дальнейшем без какого-либо графического интерфейса (сохраняя некоторые файлы).

Вот MWE:

# ui.py
from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(328, 269)

        # create a button and a label where the file path is displayed
        self.verticalLayout = QtGui.QVBoxLayout()
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.savepathButton = QtGui.QPushButton(Form)
        self.savepathButton.setObjectName(_fromUtf8("savepathButton"))
        self.savepath_label = QtGui.QLabel(Form)
        self.savepath_label.setObjectName(_fromUtf8("savepath_label"))
        self.verticalLayout.addWidget(savepathButton)
        self.verticalLayout.addWidget(savepath_label)

Вот обертка:

# ui_module.py
from PyQt4.QtGui import QApplication, QDialog, QAction, QFileDialog
from ui import Ui_Form


class AppWindow(QDialog):

    def __init__(self):
        super().__init__()
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.show()

        # current directory as label text
        self.ui.savepath_label.setText("{}\data".format(os.getcwd().replace("\\\\", "\\")))


        # this is the part where I have to guess what I do
        # how do I update the label text after the button press?
        self.ui.savepathButton.pressed.connect(lambda: self.file_save())



    def file_save(self):
        path = QFileDialog.getExistingDirectory(self, "Choose directory")
        self.ui.savepath_label.setText(path)

if __name__ == "__main__":
app = QApplication(sys.argv)
w = AppWindow()
w.show()
sys.exit(app.exec_())

и вот основная программа:

import ui_module

app = ui_module.AppWindow()
    app.show()
    result = app.exec_()

    if result == 1:
        # how do I get the string of the filepath here?

Я не уверен, где лучше всего указать сигнал QFileDialog и как перенести фактическую строку в мою основную программу. Если возможно, я хочу избежать изменения ui.py, потому что это файл, который я получаю от QtDesigner.

Спасибо за любую помощь!

0 ответов

Другие вопросы по тегам