pyside2 在widget主界面中创建label并在label布局button同时使用QPainter设置weidget,labei,button背景图片
时间: 2024-03-23 15:42:54 浏览: 179
可以使用如下代码在 PySide2 中创建一个带有背景图片的 `QWidget`,其中包含一个带有背景图片和按钮的 `QLabel`:
```python
from PySide2.QtGui import QPainter, QPixmap
from PySide2.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 设置 widget 背景图片
self.set_background_image("background.png")
# 创建一个垂直布局
layout = QVBoxLayout(self)
# 创建一个带有背景图片的 QLabel
label = QLabel(self)
label.setPixmap(QPixmap("label_background.png"))
label.setScaledContents(True)
label.setFixedSize(200, 200)
layout.addWidget(label)
# 创建一个带有背景图片的 QPushButton
button = QPushButton(self)
button.setStyleSheet("background-image: url(button_background.png);")
button.setFixedSize(100, 50)
layout.addWidget(button)
def set_background_image(self, image_path):
# 设置 widget 背景图片
self.setAutoFillBackground(True)
palette = self.palette()
pixmap = QPixmap(image_path)
palette.setBrush(self.backgroundRole(), QtGui.QBrush(pixmap))
self.setPalette(palette)
def paintEvent(self, event):
# 设置 widget 边框
painter = QPainter(self)
painter.setPen(QtGui.QPen(QtGui.QColor(0, 0, 0), 5))
painter.drawRect(self.rect())
```
在上述代码中,我们自定义了一个 `MyWidget` 类,继承自 `QWidget`,并在其中实现了带有背景图片的 `QWidget`,包含了一个带有背景图片的 `QLabel` 和一个带有背景图片的 `QPushButton`。其中,我们在 `set_background_image()` 函数中使用了 `QPalette` 和 `QPixmap` 设置 widget 的背景图片,而在 `paintEvent()` 函数中使用 `QPainter` 设置 widget 的边框。
需要注意的是,上述代码中的图片路径需要根据实际情况进行修改。
阅读全文