mar*_*004 5 qwidget qimage python-3.x pyqt5 qlayout
PyQt5 新手...这是一个非常基本的问题。
我想在小部件的布局中添加一个图像。这个小部件是我的应用程序的主窗口/根小部件。我使用以下代码,但收到一条错误消息。
import sys
from PyQt5.QtGui import QImage
from PyQt5.QtWidgets import *
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(300,300,300,220)
self.setWindowTitle("Hello !")
oImage = QImage("backgound.png")
oLayout = QVBoxLayout()
oLayout.addWidget(oImage)
self.setLayout(oLayout)
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
oMainwindow = MainWindow()
sys.exit(app.exec_())
TypeError: QBoxLayout.addWidget(QWidget, int stretch=0, Qt.Alignment alignment=0): argument 1 has unexpected type 'QImage'
Run Code Online (Sandbox Code Playgroud)
显然 QLayoutWidget 不接受 QImage 作为输入。是否有解决方法让图像在 QWidget 中显示为背景?
QVBoxLayout 类垂直排列小部件。
QImage 不是小部件。
在许多小部件上,例如QmainWindow,QLabel您可以使用
widget.setStyleSheet(„ background-image: url(backgound.png);“)
Run Code Online (Sandbox Code Playgroud)
在我的机器上这不适用于QWidget. 在这种情况下,您可以使用以下代码重写:
import sys
from PyQt5.QtCore import QSize
from PyQt5.QtGui import QImage, QPalette, QBrush
from PyQt5.QtWidgets import *
class MainWindow(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setGeometry(100,100,300,200)
oImage = QImage("test.png")
sImage = oImage.scaled(QSize(300,200)) # resize Image to widgets size
palette = QPalette()
palette.setBrush(QPalette.Window, QBrush(sImage))
self.setPalette(palette)
self.label = QLabel('Test', self) # test, if it's really backgroundimage
self.label.setGeometry(50,50,200,50)
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
oMainwindow = MainWindow()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26931 次 |
| 最近记录: |