我想在QProgressBar上显示文字。我正在使用setRange(0, 0)
来显示忙碌指示符。
progressBar = QProgressBar()
progressBar.setFormat('some text')
progressBar.setValue(0)
progressBar.setRange(0, 0)
我必须删除setRange(0, 0)
,否则不会显示文字。有没有办法显示忙碌指示符和文本?
答案 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_()