Python 使用简单PyQT UI选择目录路径

Python 使用简单PyQT UI选择目录路径,python,python-3.x,pyqt,pyqt5,Python,Python 3.x,Pyqt,Pyqt5,我对Python有点陌生,尤其是对PyQT。 我使用PyQT5创建了一个非常简单的gui。现在,我想升级它,让它比计算数字运算更真实 我希望用户选择带有图像的目录。 在那之后,还有其他一些小操作,比如勾选一些复选框,我想在后台运行我的算法,同时通过进度条向他/她显示进度 这是我现在的代码: import sys from os.path import expanduser from PyQt5.QtWidgets import QMainWindow, QApplication from Py

我对Python有点陌生,尤其是对PyQT。 我使用PyQT5创建了一个非常简单的gui。现在,我想升级它,让它比计算数字运算更真实

我希望用户选择带有图像的目录。 在那之后,还有其他一些小操作,比如勾选一些复选框,我想在后台运行我的算法,同时通过进度条向他/她显示进度

这是我现在的代码:

import sys
from os.path import expanduser

from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5 import uic, QtGui

Ui_MainWindow, QtBaseClass = uic.loadUiType("mainGui_3A.ui")


class MyApp(QMainWindow):
    def __init__(self):
        super(MyApp, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton_Directory.clicked.connect(self.choose_directory)
        self.ui.pushButton_CreateAlbum.clicked.connect(self.create_album)

    def choose_directory(self):
        my_dir = QtGui.QFileDialog.getExistingDirectory(
        self,
        "Open a folder",
        expanduser("~"),
        QtGui.QFileDialog.ShowDirsOnly
    )
        self.ui.lineEdit_Directory.setText(my_dir)

    def create_album(self):
        current_dir = self.ui.lineEdit_Directory.toPlainText()
        check1 = self.ui.checkBox_1.value()
        check2 = self.ui.checkBox_2.value()
        return current_dir, check1, check2

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())
我看过:

正如您所看到的,由于以下错误,我仍然没有添加最后一位,但我认为我需要研究一下:

一开始没有错误。我相信用户界面是当前加载的,但只要我点击其中一个按钮,程序就会停止运行。。我做错了什么?我需要使用线程来选择目录吗

欢迎为未来提供任何建议


提前谢谢

我不喜欢回答我自己的问题,但我想如果这可以节省某人几个小时的研究时间,那也没关系

因此,我在这里找到了一个解决方案,并在代码中找到了可能的错误

解决方案:

我通过文本比较发现的可能错误:

  • 使用

    my_dir = QtGui.QFileDialog.getExistingDirectory(
        self,
        "Open a folder",
        expanduser("~"),
        QtGui.QFileDialog.ShowDirsOnly
    )
    
而不是

    input_dir = QFileDialog.getExistingDirectory(None, 'Select a folder:', 
        expanduser("~"))

它停止运行意味着什么?它存在吗?我没有看到任何明显的错误,除了(我希望)无效的格式-create_album应该是MyApp类的一个方法,对吗?当我单击任何按钮时,我得到一条已知消息,它的标题是“Python已停止工作”(从Windows),然后我被建议关闭该程序。。。当我单击复选框时,不会发生这种情况。你是对的,create_album是类中的一个方法-格式化错误。更正了上面提到的格式化问题。我建议不要使用线程-当然不是选择目录所必需的-虽然非常强大,但是学习曲线陡峭。您是否在命令提示符下运行该程序?还是IDE?是否有任何异常消息?不是来自cmd,而是通过IDE(PyCharm)。。。没有例外,我得到的只是:“进程已完成,退出代码为-1073740791(0xC0000409)”
    input_dir = QFileDialog.getExistingDirectory(None, 'Select a folder:', 
        expanduser("~"))