Связать кнопку формы и событие QFileDialog
Изучаю PyQt5, в дизайнере создал форму, привязал к проекту.
С событиями в виде клика на кнопку вроде-как разобрался. \
Пытаюсь привязать выбор папки на кнопку, не пойму почему:
"Process finished with exit code -1073740791 (0xC0000409)"
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QFileDialog
# Импортируем наш шаблон.
from mainform import Ui_MainWindow
import sys
class mywindow(QtWidgets.QMainWindow):
def __init__(self):
super(mywindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
#
self.ui.btn_select_dir.clicked.connect(self.btnSelectDIR)
self.ui.btn_download_video.clicked.connect(self.btnSaveFile)
def btnSelectDIR(self):
#print(self.ui.link_save_to.text())
dir_choose = QFileDialog.getExistingDirectory(self,
"Выберите папку",
self.cwd) # Начальный путь
if dir_choose == "":
print("\ nОтменить выбор")
return
print("\ nВы выбрали папку:")
print(dir_choose)
def btnSaveFile(self):
print('save')
app = QtWidgets.QApplication([])
application = mywindow()
application.show()
sys.exit(app.exec())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Ваш пример должен быть воспроизводимым. Вы не предоставили модуль mainform.py.
Чтобы получить реальную ошибку, всегда запускайте приложение в CMD/терминале/консоли.
Что такое
self.cwd?
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
# ??? # Импортируем наш шаблон.
# ??? from mainform import Ui_MainWindow
# v
class MyWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MyWindow, self).__init__()
# ??? self.ui = Ui_MainWindow()
# ??? self.ui.setupUi(self)
# ??? self.ui.btn_select_dir.clicked.connect(self.btnSelectDIR)
# ??? self.ui.btn_download_video.clicked.connect(self.btnSaveFile)
self.centralwidget = QWidget()
self.setCentralWidget(self.centralwidget)
self.btn_select_dir = QPushButton("btn_select_dir")
self.btn_select_dir.clicked.connect(self.btnSelectDIR)
self.btn_download_video = QPushButton("btn_download_video")
self.btn_download_video.clicked.connect(self.btnSaveFile)
self.layout = QVBoxLayout(self.centralwidget)
self.layout.addWidget(self.btn_select_dir)
self.layout.addWidget(self.btn_download_video)
def btnSelectDIR(self):
# ??? print(self.ui.link_save_to.text())
dir_choose = QFileDialog.getExistingDirectory(
self,
"Выберите папку",
# так:
QtCore.QDir.currentPath() # Начальный путь
# или так:
# "." # ??? self.cwd
)
if dir_choose:
print(f"\nВы выбрали папку: {dir_choose}")
else:
print("\nОтменить выбор")
# return
def btnSaveFile(self):
print('def btnSaveFile(self):')
if __name__ == "__main__":
app = QApplication(sys.argv)
application = MyWindow()
application.show()
sys.exit(app.exec())
