PyQt5 - 在主窗口布局的背景中添加图像
PyQt5 - Add image in background of MainWindow layout
PyQt5 的新手...这是一个非常基本的问题。
我想在小部件的布局中添加图像。这个小部件是我的应用程序的主要 Window / 根小部件。我使用以下代码,但收到错误消息。
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'
显然 QLayoutWidget 不接受 QImage 作为输入。是否有解决方法可以让图像在 QWidget 中显示为背景?
The QVBoxLayout class lines up widgets vertically.
QImage
不是小部件。
在许多小部件上,例如QmainWindow
, QLabel
你可以用
widget.setStyleSheet(„ background-image: url(backgound.png);“)
在我的机器上这不适用于 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_())
PyQt5 的新手...这是一个非常基本的问题。
我想在小部件的布局中添加图像。这个小部件是我的应用程序的主要 Window / 根小部件。我使用以下代码,但收到错误消息。
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'
显然 QLayoutWidget 不接受 QImage 作为输入。是否有解决方法可以让图像在 QWidget 中显示为背景?
The QVBoxLayout class lines up widgets vertically.
QImage
不是小部件。
在许多小部件上,例如QmainWindow
, QLabel
你可以用
widget.setStyleSheet(„ background-image: url(backgound.png);“)
在我的机器上这不适用于 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_())