Python 是否可以设置QProgressBar的格式以在pyqt5中显示前导零的值?
考虑此示例,修改自:Python 是否可以设置QProgressBar的格式以在pyqt5中显示前导零的值?,python,pyqt5,Python,Pyqt5,考虑此示例,修改自: 从PyQt5.QtWidgets导入* 从PyQt5.QtGui导入* 从PyQt5.QtCore导入* 导入系统 导入时间 类示例(QWidget): 定义初始化(自): super()。\uuuu init\uuuuu() #调用initUI方法 self.initUI() #创建小部件的方法 def initUI(self): #创建进度条 self.pbar=QProgressBar(self) #设置其几何图形 self.pbar.setGeometry(30,4
从PyQt5.QtWidgets导入*
从PyQt5.QtGui导入*
从PyQt5.QtCore导入*
导入系统
导入时间
类示例(QWidget):
定义初始化(自):
super()。\uuuu init\uuuuu()
#调用initUI方法
self.initUI()
#创建小部件的方法
def initUI(self):
#创建进度条
self.pbar=QProgressBar(self)
#设置其几何图形
self.pbar.setGeometry(30,40,200,25)
#创建按钮
self.btn=QPushButton('Start',self)
#改变立场
自身btn移动(40,80)
#向按钮添加操作
self.btn.clicked.connect(self.doAction)
#设置窗口几何图形
self.setGeometry(300300280170)
#设置窗口操作
self.setWindowTitle(“Python”)
#设置进度条的格式:
#self.pbar.setFormat(“Hello world%v of%m”)#工作正常
打印(“仅测试前导零:%04d”%12)#好,打印0012
self.pbar.setFormat(“Hello world%04v of%04m”)#前导零?不
#显示所有小部件
self.show()
#按下按钮时,将调用此方法
def doAction(自我):
自身pbar设置最大值(100)
#设置循环以设置进度条的值
对于范围(101)内的i:
#减慢循环速度
睡眠时间(0.05)
#将值设置为进度条
self.pbar.setValue(一)
#主要方法
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
#创建pyqt5应用程序
App=QApplication(sys.argv)
#创建窗口的实例
window=Example()
#启动应用程序
sys.exit(App.exec())
使用self.pbar.setFormat(“Hello world%v of%m”)
打印进度条的当前值和最大值效果良好
现在,我想做同样的事情,但是当前值和max被格式化为最多4个前导零
因此,考虑到例如print(“%04d”%12)
prints0012
,我尝试了self.pbar.setFormat(“Hello world%04v of%04m”)
,但它根本不格式化数字:
那么,是否可以以某种方式设置进度条的格式,从而将当前值和最大值格式化为带前导零的整数?一种可能的解决方案是覆盖QProgressBar的
text()
方法:
from PyQt5 import QtWidgets
class ProgressBar(QtWidgets.QProgressBar):
def text(self):
return self.format() % dict(m=self.value(), v=(self.maximum() - self.minimum()))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = ProgressBar()
w.setMaximum(100)
w.setValue(5)
w.setFormat("Hello world %(m)04d of %(v)04d")
w.show()
sys.exit(app.exec())
非常感谢@eyllanesc-这个解决方案对我来说非常有效!