相关疑难解决方法(0)

PySide和QProgressBar在不同的线程中更新

这可能是一个很长的帖子,所以,提前感谢与我在一起直到最后.这是问题,(我认为这是一个相当基本的问题,只是我对PiSide和Qt缺乏经验使我更难.)我有一个主窗口,其中包含一个菜单项,假设为"Process".代码如下 -

from PySide import QtCore, QtGui

class Ui_MainWindow(object):

      def setupUi(self, MainWindow, AppObj):
            .
            .
            self.statusbar = QtGui.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
            .
            .
            .
           self.actionProcess = QtGui.QAction(MainWindow)
           self.actionProcess.setObjectName("actionProcess")
           self.actionProcess.triggered.connect(self.myappObj.menuActionProcess) 
           .
Run Code Online (Sandbox Code Playgroud)

这里self.myappobj指的是我创建的app类,它充当我的应用程序的主要逻辑控制器.代码 -

from PySide import QtCore, QtGui
from MainWindow import Ui_MainWindow

class App(QtGui.QDialog):
      def __init__(self, parent=None):
          self.__mainWindow = QtGui.QMainWindow()
          self.__mainWindowDesignContext = Ui_MainWindow()
          self.__mainWindowDesignContext.setupUi(self.__mainWindow, self)
          self.__mainWindow.show()
      def menuActionProcess(self):
          self.processThread = BatchProcesser()
          self.progressBar = QtGui.QProgressBar()
          statusBar.addWidget(self.progressBar)
          self.progressBar.show()
          self.progressBar.setMinimum(0)
          self.progressBar.setMaximum(100)
          QtCore.QObject.connect(self.processThread, QtCore.SIGNAL("progress(int)"),self.progressBar, QtCore.SLOT("setValue(int)"), QtCore.Qt.DirectConnection)
          if not self.processThread.isRunning():
              self.processThread.exiting = False
              self.processThread.start()
Run Code Online (Sandbox Code Playgroud)

所以,我很容易看到我在这里要做的是创建一个主窗口.添加一个名为"Process"的菜单,单击该菜单会触发app类中的回调menuActionProcess方法,我在其中创建一个进度条并将其附加到我主窗口的状态栏(实际代码还有很多其他内容,我在这里给出的是作为伪示例重新排列的必要部分),最后在上面代码中提到的BatchProcesser类中,我这样做 -

from …
Run Code Online (Sandbox Code Playgroud)

python qt multithreading pyside progress-bar

4
推荐指数
1
解决办法
5179
查看次数

标签 统计

multithreading ×1

progress-bar ×1

pyside ×1

python ×1

qt ×1