paulenot
@paulenot
Статус пользователя - чайник

Почему не вызывается QFileDialog()?

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog

class Ui_linux_installer(object):
    def setupUi(self, linux_installer):
        linux_installer.setObjectName("linux_installer")
        linux_installer.resize(552, 163)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(linux_installer.sizePolicy().hasHeightForWidth())
        linux_installer.setSizePolicy(sizePolicy)
        linux_installer.setMinimumSize(QtCore.QSize(552, 163))
        linux_installer.setMaximumSize(QtCore.QSize(552, 163))
        self.centralwidget = QtWidgets.QWidget(linux_installer)
        self.centralwidget.setObjectName("centralwidget")
        self.button_install = QtWidgets.QPushButton(self.centralwidget)
        self.button_install.setGeometry(QtCore.QRect(420, 120, 121, 31))
        self.button_install.setObjectName("button_install")
        self.line_path_file = QtWidgets.QLineEdit(self.centralwidget)
        self.line_path_file.setGeometry(QtCore.QRect(10, 80, 501, 31))
        self.line_path_file.setObjectName("line_path_file")
        self.button_dialog = QtWidgets.QToolButton(self.centralwidget)
        self.button_dialog.setGeometry(QtCore.QRect(512, 80, 31, 31))
        self.button_dialog.setObjectName("button_dialog")
        self.label_info = QtWidgets.QLabel(self.centralwidget)
        self.label_info.setGeometry(QtCore.QRect(10, 10, 531, 41))
        self.label_info.setWordWrap(True)
        self.label_info.setObjectName("label_info")
        self.label_file = QtWidgets.QLabel(self.centralwidget)
        self.label_file.setGeometry(QtCore.QRect(10, 60, 521, 17))
        self.label_file.setObjectName("label_file")
        self.button_close = QtWidgets.QPushButton(self.centralwidget)
        self.button_close.setGeometry(QtCore.QRect(290, 120, 121, 31))
        self.button_close.setObjectName("button_close")
        linux_installer.setCentralWidget(self.centralwidget)

        self.retranslateUi(linux_installer)
        QtCore.QMetaObject.connectSlotsByName(linux_installer)

    def retranslateUi(self, linux_installer):
        _translate = QtCore.QCoreApplication.translate
        linux_installer.setWindowTitle(_translate("linux_installer", "Linux Installer"))
        self.button_install.setText(_translate("linux_installer", "Установить"))
        #self.line_path_file.setText(_translate("linux_installer", ""))
        self.button_dialog.setText(_translate("linux_installer", "..."))
        #self.label_info.setText(_translate("linux_installer", " "))
        self.label_file.setText(_translate("linux_installer", "Файл для установки:"))
        self.button_close.setText(_translate("linux_installer", "Закрыть"))

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    linux_installer = QtWidgets.QMainWindow()
    ui = Ui_linux_installer()
    ui.setupUi(linux_installer)
    linux_installer.show()

# Кнопка закрывает окно
close = linux_installer.close
ui.button_close.clicked.connect( close )

# тут не работает! Функция открытия файла:
def showDialog(self):
    fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')[0]
    print(fname)

# Вызов функции showDialog 
ui.button_dialog.clicked.connect( showDialog )

sys.exit(app.exec_())


При нажатии button_dialog такая ошибка:
Traceback (most recent call last):
  File "main.py", line 68, in showDialog
    fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')[0]
TypeError: getOpenFileName(parent: QWidget = None, caption: str = '', directory: str = '', filter: str = '', initialFilter: str = '', options: Union[QFileDialog.Options, QFileDialog.Option] = 0): argument 1 has unexpected type 'bool'
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
tsarevfs
@tsarevfs
C++ developer
Попробуйте добавить еще ожин аргумент. У вас получается что в self прилетает bool от кнопки.

def showDialog(self, checked):
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bbkmzzzz
Мешанина всего подряд в кучу. Разберитесь сначала с классами хотя бы, а потом приступайте к PyQt.
Traceback (most recent call last):
  File "main.py", line 72, in hider
    close()
NameError: name 'close' is not defined

NameError: name 'close' is not defined
Не определено имя close
То, что вам нужно - метод класса QMainWindow
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Epiphan Video Оттава
от 72 600 usd.
FirstVDS Иркутск
от 50 000 до 80 000 руб.
YLab Тольятти
от 90 000 до 150 000 руб.