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