📅  最后修改于: 2023-12-03 15:03:56.203000             🧑  作者: Mango
在 PyQT5 中,进度条是常用的组件之一。在某些情况下,我们需要为进度条添加一个虚线边框来突出显示,这篇文章将会介绍如何实现。
PyQt5 中的进度条和 QFrame 组件来绘制虚线边框。因此,我们需要导入以下库:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QProgressBar, QFrame
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QPen
首先需要先创建一个窗口以及一个垂直布局来放置进度条和边框。代码如下:
class Window(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Progress Bar with Dashed Border')
layout = QVBoxLayout(self)
# Add Progress bar
progress_bar = QProgressBar()
layout.addWidget(progress_bar)
# Add Frame around Progress bar
frame = QFrame()
frame.setFrameShape(QFrame.Box)
frame.setFrameShadow(QFrame.Sunken)
layout.addWidget(frame)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())
我们使用 QFrame 组件来绘制虚线边框。在 QFrame 上绘制线条需要实现 paintEvent() 函数,并使用 QPainter 组件来绘制线条。绘制时应设置线的风格和宽度。
class DashedFrame(QFrame):
def paintEvent(self, event):
painter = QPainter()
painter.begin(self)
painter.setPen(QPen(Qt.DashLine))
painter.setBrush(Qt.NoBrush)
painter.drawRect(0, 0, self.width() - 1, self.height() - 1)
painter.end()
将进度条并列放置 QFrame 上,并为 QFrame 添加边框。
class Window(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Progress Bar with Dashed Border')
layout = QVBoxLayout(self)
# Add Progress bar
progress_bar = QProgressBar()
layout.addWidget(progress_bar)
# Add Frame around Progress bar
frame = DashedFrame()
frame.setFrameShape(QFrame.Box)
frame.setFrameShadow(QFrame.Sunken)
layout.addWidget(frame)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())
在本文中,我们介绍了如何在 PyQt5 中为进度条添加虚线边框。我们创建了一个窗口作为布局,将进度条和虚线边框放入其中。虚线边框的实现通过 QFrame 组件来完成。