設置窗口背景(六)

前言

窗口背景主要包括,背景色與背景圖片,設置窗口背景有三種方法

  • 使用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)

這裏寫圖片描述

以上是設置窗口圖片與背景的三種方法,有用的話可以收藏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章