自定义控件
PyQt5有丰富的组件,但是肯定满足不了所有开发者的所有需求, PyQt5只提供了基本的组件,像按钮,文本,滑块等,如果你还需要其 他的模块,应该尝试自己去自定义一些
自定义组件使用绘画工具创建,有两个基本方式:根据已有的创建或进;通过自己绘图创建
Burning widget
这个组件我们会在Nero,K3B,或者其他CD/DVD烧录软件中见到
例子中,我们使用了 QSlider 和一个自定义组件,由进度条控制。显示 的有物体(也就是CD/DVD)的总容量和剩余容量。进度条的范围是 1~750。如果值达到了700(OVER_CAPACITY),就显示为红色,代 表了烧毁了的意思
烧录组件在窗口的底部,这个组件是用 QHBoxLayout 和QVBoxLayout 组成的
代码实现:
from PyQt5.QtWidgets import (QWidget, QSlider, QApplication,
QHBoxLayout, QVBoxLayout)
from PyQt5.QtCore import QObject, Qt, pyqtSignal
from PyQt5.QtGui import QPainter, QFont, QColor, QPen
import sys
class Communicate(QObject):
updateBW = pyqtSignal(int)
# 基于 QWidget 组件
class BurningWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 修改组件进度条的高度,默认的有点小
self.setMinimumSize(1, 30)
self.value = 75
self.num = [75, 150, 225, 300, 375, 450, 525, 600, 675]
def setValue(self, value)