Как выбрать путь для сохранения?
Как в этом коде выбрать путь для сохранения, например папку Downloads?
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog
import os
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 221)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(0, 0, 801, 601))
self.frame.setStyleSheet("background-color: rgb(27, 29, 35);")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.label = QtWidgets.QLabel(self.frame)
self.label.setGeometry(QtCore.QRect(320, 20, 151, 41))
self.label.setMinimumSize(QtCore.QSize(151, 41))
self.label.setMaximumSize(QtCore.QSize(151, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(24)
self.label.setFont(font)
self.label.setStyleSheet("color: rgb(255, 255, 255);")
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.input = QtWidgets.QLineEdit(self.frame)
self.input.setGeometry(QtCore.QRect(40, 80, 721, 61))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(16)
self.input.setFont(font)
self.input.setStyleSheet("background-color: rgb(37, 39, 48);\n"
"color: #ffffff;\n"
"border-radius: 10px;")
self.input.setText("")
self.input.setAlignment(QtCore.Qt.AlignCenter)
self.input.setObjectName("input")
self.start = QtWidgets.QPushButton(self.frame)
self.start.setGeometry(QtCore.QRect(250, 160, 131, 31))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(13)
self.start.setFont(font)
self.start.setStyleSheet("background-color: rgb(37, 39, 48);\n"
"color: #ffffff;\n"
"border-radius: 10px;")
self.start.setObjectName("start")
self.folder = QtWidgets.QPushButton(self.frame)
self.folder.setGeometry(QtCore.QRect(410, 160, 151, 31))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(13)
self.folder.setFont(font)
self.folder.setStyleSheet("background-color: rgb(37, 39, 48);\n"
"color: #ffffff;\n"
"border-radius: 10px;")
self.folder.setObjectName("folder")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.add_functions()
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "Ссылка"))
self.start.setText(_translate("MainWindow", "Старт"))
self.folder.setText(_translate("MainWindow", "Выбрать папку"))
def add_functions(self):
self.start.clicked.connect(lambda: self.start())
self.folder.clicked.connect(lambda: self.open())
def open(self):
QFileDialog.getExistingDirectory(self, "Выберите путь", f"C:\\Users\\{os.getlogin()}")
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Выдаёт ошибку:
TypeError: getExistingDirectory(parent: QWidget = None, caption: str = '', directory: str = '', options: Union[QFileDialog.Options, QFileDialog.Option] = QFileDialog.ShowDirsOnly): argument 1 has unexpected type 'Ui_MainWindow'
Ответы (1 шт):
Автор решения: joparez228
→ Ссылка
Не изменяйте код, сгенерированный Qt Designer. Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog
import sys
import os
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 221)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(0, 0, 801, 601))
self.frame.setStyleSheet("background-color: rgb(27, 29, 35);")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.label = QtWidgets.QLabel(self.frame)
self.label.setGeometry(QtCore.QRect(320, 20, 151, 41))
self.label.setMinimumSize(QtCore.QSize(151, 41))
self.label.setMaximumSize(QtCore.QSize(151, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(24)
self.label.setFont(font)
self.label.setStyleSheet("color: rgb(255, 255, 255);")
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.input = QtWidgets.QLineEdit(self.frame)
self.input.setGeometry(QtCore.QRect(40, 80, 721, 61))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(16)
self.input.setFont(font)
self.input.setStyleSheet("background-color: rgb(37, 39, 48);\n"
"color: #ffffff;\n"
"border-radius: 10px;")
self.input.setText("")
self.input.setAlignment(QtCore.Qt.AlignCenter)
self.input.setObjectName("input")
self.start = QtWidgets.QPushButton(self.frame)
self.start.setGeometry(QtCore.QRect(250, 160, 131, 31))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(13)
self.start.setFont(font)
self.start.setStyleSheet("background-color: rgb(37, 39, 48);\n"
"color: #ffffff;\n"
"border-radius: 10px;")
self.start.setObjectName("start")
self.folder = QtWidgets.QPushButton(self.frame)
self.folder.setGeometry(QtCore.QRect(410, 160, 151, 31))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(13)
self.folder.setFont(font)
self.folder.setStyleSheet("background-color: rgb(37, 39, 48);\n"
"color: #ffffff;\n"
"border-radius: 10px;")
self.folder.setObjectName("folder")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "Ссылка"))
self.start.setText(_translate("MainWindow", "Старт"))
self.folder.setText(_translate("MainWindow", "Выбрать папку"))
#### новый класc###
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.add_functions()
def add_functions(self):
self.start.clicked.connect(lambda: self.start())### ваша логика
self.folder.clicked.connect(lambda: self.open())
def open(self):
QFileDialog.getExistingDirectory(self, "Выберите путь", "C:\\Users\\{os.getlogin()}")
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
# uw = Ui_MainWindow() # --- # +++
w.show()
sys.exit(app.exec())