📜  PyQt5 – 如何从进度条中删除百分比符号?(1)

📅  最后修改于: 2023-12-03 15:33:54.463000             🧑  作者: Mango

PyQt5 – 如何从进度条中删除百分比符号?

简介

PyQt5是一个流行的Python GUI框架,它提供了许多易于使用和强大的界面组件,其中之一就是进度条。进度条通常用于展示某个任务的进度百分比,但在某些情况下,我们可能希望删除百分比符号,这篇文章将会教你如何实现这一点。

实现步骤
Step 1:创建一个进度条

首先,我们需要在我们的PyQt5应用程序中创建一个进度条。我们可以使用QProgressBar类轻松实现这一点。下面是一个简单的示例:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar
from PyQt5.QtCore import QBasicTimer
 
 
class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)

        self.timer = QBasicTimer()
        self.step = 0
        
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('QProgressBar')
        self.show()
        
        
    def timerEvent(self, e):
      
        if self.step >= 100:
            
            self.timer.stop()
            return
            
        self.step = self.step + 1
        self.pbar.setValue(self.step)
        
        
    def startProgressBar(self):
      
        if self.timer.isActive():
            
            self.timer.stop()
            
        self.timer.start(100, self)
        
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

这个示例在界面上创建了一个进度条,然后启动了一个定时器,定时器每100毫秒更新进度条的值。下面是这个示例的截图:

进度条截图

Step 2:重写进度条的format()方法

现在我们已经创建了一个进度条,我们要在不改变进度值的情况下删除百分比符号。为了实现这一点,我们需要使用QString类的format()方法。我们可以在我们的Example类中添加一个新的方法:

    def removePercent(self, p):
        
        return str(p).replace('%', '')

这个方法接收一个整数p作为参数,并返回一个字符串,这个字符串是从p的百分比形式删除了百分号的结果。例如,如果传入50,那么这个方法将返回字符串“50”。下面是完整的Example类的代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar
from PyQt5.QtCore import QBasicTimer, QString
 
 
class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)

        self.timer = QBasicTimer()
        self.step = 0
        
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('QProgressBar')
        self.show()
        
        
    def timerEvent(self, e):
      
        if self.step >= 100:
            
            self.timer.stop()
            return
            
        self.step = self.step + 1
        self.pbar.setValue(self.step)
        
        # 更新进度条的文本
        progressValue = self.removePercent(self.pbar.value())
        self.pbar.setFormat(progressValue)
        
        
    def startProgressBar(self):
      
        if self.timer.isActive():
            
            self.timer.stop()
            
        self.timer.start(100, self)
        
        
    def removePercent(self, p):
        
        return str(p).replace('%', '')
        
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

timerEvent()方法中,我们使用self.removePercent()方法来将进度条的值转换为一个不带百分号的字符串,并使用setFormat()方法将这个字符串设置为进度条的文本。现在我们运行这个应用程序,进度条将没有百分号。

进度条截图

总结

本文分享了在PyQt5应用程序中删除进度条百分比符号的方法。我们创建了一个进度条并通过重写format()方法来实现这一点。希望这篇文章能够帮助你。