qpainter绘制按钮
时间: 2023-09-11 18:09:00 浏览: 89
自绘按钮程序
可以使用 QPainter 绘制按钮的样式和效果。
以下是一个简单的绘制按钮的示例代码:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QColor, QBrush, QPen
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton
class MyButton(QPushButton):
def __init__(self, parent=None):
super(MyButton, self).__init__(parent)
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing) # 抗锯齿
painter.setPen(QPen(Qt.NoPen))
if self.isEnabled(): # 按钮可用
if self.isDown(): # 按钮被按下
painter.setBrush(QBrush(QColor(255, 0, 0)))
else: # 鼠标未按下
painter.setBrush(QBrush(QColor(255, 128, 0)))
else: # 按钮不可用
painter.setBrush(QBrush(QColor(128, 128, 128)))
rect = self.rect()
painter.drawRoundedRect(rect, 5, 5)
text_rect = self.fontMetrics().boundingRect(self.text())
text_pos = rect.center() - text_rect.center()
painter.drawText(text_pos, self.text())
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
button = MyButton("Click Me")
button.setGeometry(100, 100, 150, 50)
button.show()
sys.exit(app.exec_())
```
在上面的代码中,我们继承了 QPushButton 类并覆盖了它的 paintEvent() 方法。在该方法中,我们使用 QPainter 绘制了一个带有圆角的矩形,并根据按钮的状态设置了不同的颜色。最后,我们通过调用 drawText() 方法将按钮的文本显示在中心位置。
阅读全文