如何使用忙指示符在QProgressBar上显示文本?

时间:2013-05-20 06:52:17

标签: python qt qt4 pyqt pyqt4

我想在QProgressBar上显示文字。我正在使用setRange(0, 0)来显示忙碌指示符。

progressBar = QProgressBar()
progressBar.setFormat('some text')
progressBar.setValue(0)
progressBar.setRange(0, 0)

我必须删除setRange(0, 0),否则不会显示文字。有没有办法显示忙碌指示符和文本?

2 个答案:

答案 0 :(得分:1)

与@Onlyjus来回走后,我终于理解了整个问题。这是一个解决方案:

from PyQt4 import QtGui, QtCore
import os
import time

class MyBar(QtGui.QWidget):
    i = 0
    style =''' 
    QProgressBar
    {
        border: 2px solid grey;
        border-radius: 5px;
        text-align: center;
    }
    '''
    def __init__(self):
        super(MyBar, self).__init__()
        grid = QtGui.QGridLayout()

        self.bar = QtGui.QProgressBar()
        self.bar.setMaximum(1)
        self.bar.setMinimum(0)

        self.bar.setStyleSheet(self.style)

        self.bar.setRange(0,0)

        self.label=QtGui.QLabel("Nudge")
        self.label.setStyleSheet("QLabel { font-size: 20px }")
        self.label.setAlignment(QtCore.Qt.AlignCenter)


        grid.addWidget(self.bar, 0,0)
        grid.addWidget(self.label, 0,0)
        self.setLayout(grid)

class MainWindow(QtGui.QMainWindow):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.bar = MyBar()

        self.setCentralWidget(self.bar)


if __name__ == '__main__':
    app = QtGui.QApplication([])
    win = MainWindow()
    win.show();
    QtGui.QApplication.instance().exec_()

基本上它会在进度条上悬挂一个标签。

以下是我提供的原始答案

我会把它放在这里,因为它可能会有所帮助。

使用setFormat方法和样式表。以下工作示例显示了如何。

from PyQt4 import QtGui, QtCore
import os
import time


class MainWindow(QtGui.QMainWindow):
    i = 0
    style =''' 
    QProgressBar
    {
        border: 2px solid grey;
        border-radius: 5px;
        text-align: center;
    }
    '''

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        grid = QtGui.QGridLayout()

        self.bar = QtGui.QProgressBar()
        self.bar.setMaximum(1)
        self.bar.setMinimum(0)

        self.bar.setStyleSheet(self.style)
        self.bar.setFormat("Custom %v units %p % %m ticks")

        self.setCentralWidget(self.bar)


        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.update)
        self.timer.start(500) # update every 0.5 sec

    def update(self):
        print self.i
        self.i += 1
        self.i %= 2
        self.bar.setValue(self.i)


if __name__ == '__main__':
    app = QtGui.QApplication([])
    win = MainWindow()
    win.show();
    QtGui.QApplication.instance().exec_()

答案 1 :(得分:0)

您正在寻找QProgressDialog类。这是一个例子:

import sys
from PySide import QtGui

app = QtGui.QApplication(sys.argv)

progressbar = QtGui.QProgressDialog(labelText='Some Text...',
                                    minimum = 0, maximum = 0)

progressbar.setWindowTitle('ProgressBar Demo')
progressbar.show()
app.exec_()