Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以设置QProgressBar的格式以在pyqt5中显示前导零的值?_Python_Pyqt5 - Fatal编程技术网

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)
prints
0012
,我尝试了
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-这个解决方案对我来说非常有效!