前言
窗口背景主要包括,背景色與背景圖片,設置窗口背景有三種方法
- 使用QSS設置窗口背景
- 使用QPalette設置窗口背景
- 實現PainEvent,使用QPainter繪製背景
QSS設置窗口背景
在QSS中,我們可以使用Background或者background-color的方式來設置背景色,設置窗口背景色之後,子控件默認會繼承父窗口的背景色,如果想要爲控件設置背景圖片或圖標,則可以使用setPixmap或則setIcon來完成。關於這兩個函數的用法,可以參考本博客下的PyQt5的基礎控件分欄
實例:QSS設置窗口背景
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
app = QApplication(sys.argv)
win = QMainWindow()
#設置窗口標題與初始大小
win.setWindowTitle("界面背景圖片設置")
win.resize(350, 250)
#設置對象名稱
win.setObjectName("MainWindow")
# #todo 1 設置窗口背景圖片
win.setStyleSheet("#MainWindow{border-image:url(./images/python.jpg);}")
#todo 2 設置窗口背景色
#win.setStyleSheet("#MainWindow{background-color: yellow}")
win.show()
sys.exit(app.exec_())
運行效果圖如下
核心代碼如下
#設置對象名稱
win.setObjectName("MainWindow")
# #todo 1 設置窗口背景圖片
win.setStyleSheet("#MainWindow{border-image:url(./images/python.jpg);}")
優化 使用setStyleSheet()設置窗口背景色,核心代碼和效果圖如下
#todo 2 設置窗口背景色
win.setStyleSheet("#MainWindow{background-color: yellow}")
QPalette設置窗口背景
當使用QPalette(調試板)來設置背景圖片時,需要考慮背景圖片的尺寸
圖片尺寸可以文件管理器打開,右鍵屬性查看
當背景圖片的寬度高度大於窗口的寬度高度時,背景圖片會平鋪整個背景
當背景圖片寬度高度小於窗口的寬度高度時,則會加載多個背景圖片
實例:QPalette設置窗口背景
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtGui import QPalette, QBrush, QPixmap
app = QApplication(sys.argv)
win = QMainWindow()
win.setWindowTitle("界面背景圖片設置")
palette = QPalette()
palette.setBrush(QPalette.Background, QBrush(QPixmap("./images/python.jpg")))
win.setPalette(palette)
# todo 1 當背景圖片的寬度和高度大於窗口的寬度和高度時
win.resize(460, 255 )
#
# # todo 2 當背景圖片的寬度和高度小於窗口的寬度和高度時
# win.resize(800, 600)
win.show()
sys.exit(app.exec_())
當背景圖片的寬度高度大於窗口的寬度高度時,背景圖片會平鋪整個背景
當背景圖片寬度高度小於窗口的寬度高度時,則會加載多個背景圖片
核心代碼如下
win.setWindowTitle("界面背景圖片設置")
palette = QPalette()
palette.setBrush(QPalette.Background, QBrush(QPixmap("./images/python.jpg")))
win.setPalette(palette)
# todo 1 當背景圖片的寬度和高度大於窗口的寬度和高度時
win.resize(460, 255 )
#
# # todo 2 當背景圖片的寬度和高度小於窗口的寬度和高度時
# win.resize(800, 600)
PaintEvent設置窗口背景
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter,QPixmap
from PyQt5.QtCore import Qt
class Winform(QWidget):
def __init__(self, parent=None):
super(Winform, self).__init__(parent)
self.setWindowTitle("paintEvent設置背景顏色")
def paintEvent(self, event):
painter = QPainter(self)
#todo 1 設置背景顏色
painter.setBrush(Qt.green)
painter.drawRect(self.rect())
# #todo 2 設置背景圖片,平鋪到整個窗口,隨着窗口改變而改變
# pixmap = QPixmap("./images/screen1.jpg")
# painter.drawPixmap(self.rect(), pixmap)
if __name__ == "__main__":
app = QApplication(sys.argv)
form = Winform()
form.show()
sys.exit(app.exec_())
核心代碼:使用paintEvent設置窗口的背景色
class Winform(QWidget):
def __init__(self, parent=None):
super(Winform, self).__init__(parent)
self.setWindowTitle("paintEvent設置背景顏色")
def paintEvent(self, event):
painter = QPainter(self)
#todo 1 設置背景顏色
painter.setBrush(Qt.green)
painter.drawRect(self.rect())
效果如圖
核心代碼:設置窗口背景圖片
# #todo 2 設置背景圖片,平鋪到整個窗口,隨着窗口改變而改變
pixmap = QPixmap("./images/screen1.jpg")
painter.drawPixmap(self.rect(), pixmap)