Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在函数运行Pyside2时显示progressBar_Python 3.x_Qt_Pyside2 - Fatal编程技术网

Python 3.x 在函数运行Pyside2时显示progressBar

Python 3.x 在函数运行Pyside2时显示progressBar,python-3.x,qt,pyside2,Python 3.x,Qt,Pyside2,我正在研究Pyside2、pytohn 3.8和windows 10 我有一个解析文件并在QtableView中显示数据的应用程序。我试图实现的是一个只有一个按钮的对话框窗口,该对话框窗口的唯一目的是为用户提供一个最低限度的简单视图,用户可以在运行LoadData()函数时,首先选择要解析的文件并具有加载进度条。仅当解析完成时,主对话框才应隐藏/关闭 以下是我迄今为止所尝试的: class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):

我正在研究Pyside2、pytohn 3.8和windows 10

我有一个解析文件并在QtableView中显示数据的应用程序。我试图实现的是一个只有一个按钮的对话框窗口,该对话框窗口的唯一目的是为用户提供一个最低限度的简单视图,用户可以在运行LoadData()函数时,首先选择要解析的文件并具有加载进度条。仅当解析完成时,主对话框才应隐藏/关闭

以下是我迄今为止所尝试的:

class MainWindow(QtWidgets.QMainWindow,  Ui_MainWindow):
    def __init__(self, file_name,parent=None):
        """
        ..
        __init__ code lines
        """
        self.change_val = QtCore.Signal(int)
        self.change_val[int].connect(self.set_progress_val)
        self.progress = QtWidgets.QProgressDialog('loading...', 'cancel', 0, 100, self)
        self.progress.show()
        self.LoadData(d.path)
    
    @QtCore.Slot(int)
    def set_progress_val(self, val):
        self.progress.setValue(val)

    def LoadData(self, file_path):
        
        """
        Parsing lines of code
        ..
        self.change_val.emit(30)
        ..
        ..
        self.change_val.emit(60)
        ..
        ..
        """
        self.progress.hide()
        #Parsing finished -> show the mainWindow
        self.show()

class HomeDialog(QtWidgets.QDialog, home_dialog.Ui_Dialog):
    def __init__(self, parent=None):
        super(HomeDialog, self).__init__(parent)
        self.setupUi(self)
        self.openB6.clicked.connect(self.get_file_name)

    def get_file_name(self):
        file_name = QtWidgets.QFileDialog.getOpenFileName(self, 'Open config file',
                                                            dir=path.join("/"),
                                                            filter="B6 (*.b6)")
        if not file_name[0]:
            return None
        else:
            self.path = file_name
            self.accept()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    app.setStyle(ProxyStyle())
    d = HomeDialog()
    if d.exec_():
        mainWin = MainWindow(file_name=d.path)
        mainWin.show()
        sys.exit(app.exec_())
我在
self.change\u val[int].connect(self.set\u progress\u val)
行上收到以下错误:

'str' object has no attribute 'connect'

信号不是在类构造函数或方法中声明的,而是在静态部分声明的:

class MainWindow(QtWidgets.QMainWindow,  Ui_MainWindow):
    change_val = QtCore.Signal(int)

    def __init__(self, file_name,parent=None):
        """
        ..
        __init__ code lines
        """
        self.change_val[int].connect(self.set_progress_val)
        self.progress = QtWidgets.QProgressDialog('loading...', 'cancel', 0, 100, self)
        self.progress.show()
        self.LoadData(d.path)
class主窗口(QtWidgets.QMainWindow,Ui\u主窗口):
更改值=QtCore.Signal(int)
def uuu init uuuu(self,file u name,parent=None):
"""
..
__初始化代码行
"""
self.change\u val[int].connect(self.set\u progress\u val)
self.progress=QtWidgets.QProgressDialog('loading…','cancel',0,100,self)
self.progress.show()

self.LoadData(d.path)
谢谢!事实上,我失去的是自我。我的ProgressDialog没有更新,它冻结了,你知道如何修复它吗?再次感谢更新:我在set_progress_val槽中添加了QtCore.QCoreApplication.processEvents()。以防对任何人都有帮助