Используйте 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.
Спасибо за любую помощь!