PyQt5之如何設(shè)置QWidget窗口背景圖片問(wèn)題
PyQt5設(shè)置QWidget窗口背景圖片
QWidget 添加背景圖片問(wèn)題
QWidget 創(chuàng)建的窗口有時(shí)并不能直接用 setStyleSheet 設(shè)置窗口部分樣式
比如背景圖,在Qt Designer 設(shè)置好背景圖樣式了 QWidget#Form{ … } 并能看到效果
但轉(zhuǎn)為 python3 代碼后,運(yùn)行程序顯示不了這個(gè)背景圖
如果樣式使用的是 background-image 就好辦了,
直接使用下面代碼替換,即使用 QPalette 控件重新畫(huà)背景圖
palette = QPalette()
palette.setBrush(QPalette.Background, QBrush(QPixmap(":/pic/images/sysBackground.jpg"))) ?
self.setPalette(palette)QSS 背景圖樣式區(qū)別
background-image: 背景圖,默認(rèn)原圖大小,窗口空余部分填充此背景圖border-image: 默認(rèn)跟隨窗口大小進(jìn)行拉伸image: 默認(rèn)原圖大小,窗口空余部分不補(bǔ)充
PyQt設(shè)置窗口背景圖像,以及圖像自適應(yīng)窗口大小變化
第一次用PyQt, 由于之前已經(jīng)用了一段時(shí)間的Python,種種原因需要做界面,搜了網(wǎng)上很多攻略,選擇了最簡(jiǎn)單的一個(gè)方法,下載PyQt5和pyqt5_tools。具體的配置這里不詳細(xì)說(shuō)了。
配置好之后通過(guò)如下界面點(diǎn)擊Qt Design(自己起的名)調(diào)用QT:
點(diǎn)擊之后創(chuàng)建QtWidgets的界面(test是自己起的名):

此時(shí)點(diǎn)擊保存,選擇當(dāng)前工程的路徑,工程目錄下會(huì)多一個(gè).ui文件,此時(shí)右擊該ui文件:

利用pyuic把ui文件轉(zhuǎn)換成Python代碼:
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): ? ? ? ? def setupUi(self, Form): ? ? ? ? ? ? ? ? Form.setObjectName(“Form”) ? ? ? ? ? ? ? ? Form.resize(400, 300) ? ? ? ? ? ? ? ? palette = QtGui.QPalette() ? ? ? ? ? ? ? ? brush = QtGui.QBrush(QtGui.QColor(0, 0, 255)) ? ? ? ? ? ? ? ? brush.setStyle(QtCore.Qt.SolidPattern) ? ? ? ? ? ? ? ? palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Link, brush) ? ? ? ? ? ? ? ? brush = QtGui.QBrush(QtGui.QColor(255, 0, 0)) ? ? ? ? ? ? ? ? brush.setStyle(QtCore.Qt.SolidPattern) ? ? ? ? ? ? ? ? palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.LinkVisited, brush) ? ? ? ? ? ? ? ? brush = QtGui.QBrush(QtGui.QColor(255, 85, 0)) ? ? ? ? ? ? ? ? brush.setStyle(QtCore.Qt.SolidPattern) ? ? ? ? ? ? ? ? palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Link, brush) ? ? ? ? ? ? ? ? brush = QtGui.QBrush(QtGui.QColor(255, 0, 0)) ? ? ? ? ? ? ? ? brush.setStyle(QtCore.Qt.SolidPattern) ? ? ? ? ? ? ? ? palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.LinkVisited, brush) ? ? ? ? ? ? ? ? brush = QtGui.QBrush(QtGui.QColor(0, 0, 255)) ? ? ? ? ? ? ? ? brush.setStyle(QtCore.Qt.SolidPattern) ? ? ? ? ? ? ? ? palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Link, brush) ? ? ? ? ? ? ? ? brush = QtGui.QBrush(QtGui.QColor(255, 0, 0)) ? ? ? ? ? ? ? ? brush.setStyle(QtCore.Qt.SolidPattern) ? ? ? ? ? ? ? ? palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.LinkVisited, brush) ? ? ? ? ? ? ? ? Form.setPalette(palette) ? ? ? ? ? ? ? ? self.retranslateUi(Form) ? ? ? ? ? ? ? ? QtCore.QMetaObject.connectSlotsByName(Form) ? ? ? ? def retranslateUi(self, Form): ? ? ? ? ? ? ? ? _translate = QtCore.QCoreApplication.translate ? ? ? ? ? ? ? ? Form.setWindowTitle(_translate(“Form”, “Form”))
此時(shí)新建文件login.py:
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPixmap,QPainter
from test import Ui_Form
import numpy as np
import sys
class mywindow(Ui_Form, QWidget):
? ? ? ? def init(self):
? ? ? ? ? ? ? ? super(mywindow, self).init()
? ? ? ? ? ? ? ? self.setupUi(self)
? ? ? ? ? ? ? ? self.num = np.random.randint(10)
? ? ? ? ? ? ? ? self.setWindowTitle(‘行人檢測(cè)')
? ? ? ? ? ? ? ? print(self.num)
? ? ? ? def paintEvent(self, event):# set background_img
? ? ? ? ? ? ? ? painter = QPainter(self)
? ? ? ? ? ? ? ? painter.drawRect(self.rect())
? ? ? ? ? ? ? ? pixmap = QPixmap("./img/1.jpg")#換成自己的圖片的相對(duì)路徑
? ? ? ? ? ? ? ? painter.drawPixmap(self.rect(), pixmap)
if name == ‘main':
app = QApplication(sys.argv)
w = mywindow()
w.paintEngine()
w.show()
sys.exit(app.exec_())結(jié)果:

全屏:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python網(wǎng)絡(luò)爬蟲(chóng)精解之XPath的使用說(shuō)明
XPath 是一門(mén)在 XML 文檔中查找信息的語(yǔ)言。XPath 可用來(lái)在 XML 文檔中對(duì)元素和屬性進(jìn)行遍歷。XPath 是 W3C XSLT 標(biāo)準(zhǔn)的主要元素,并且 XQuery 和 XPointer 都構(gòu)建于 XPath 表達(dá)之上2021-09-09
Pyorch之numpy與torch之間相互轉(zhuǎn)換方式
今天小編就為大家分享一篇Pyorch之numpy與torch之間相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python實(shí)現(xiàn)騰訊滑塊驗(yàn)證碼識(shí)別
這篇文章主要介紹了python如何實(shí)現(xiàn)騰訊滑塊驗(yàn)證碼識(shí)別,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04
python TK庫(kù)簡(jiǎn)單應(yīng)用(實(shí)時(shí)顯示子進(jìn)程輸出)
這篇文章主要介紹了python TK庫(kù)簡(jiǎn)單應(yīng)用(實(shí)時(shí)顯示子進(jìn)程輸出),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
詳解OpenCV中直方圖,掩膜和直方圖均衡化的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了OpenCV中直方圖、掩膜、直方圖均衡化詳細(xì)介紹及代碼的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),需要的可以參考一下2022-11-11
Deepsort + Yolo 實(shí)現(xiàn)行人檢測(cè)和軌跡追蹤的方法
這篇文章主要介紹了Deepsort + Yolo 實(shí)現(xiàn)行人檢測(cè)和軌跡追蹤,本項(xiàng)目通過(guò)采用深度學(xué)習(xí)方法實(shí)現(xiàn)YOLO算法行人檢測(cè)和deepsort算法對(duì)人員定位的和軌跡跟蹤,需要的朋友可以參考下2021-09-09
Python pip安裝依賴(lài)redis被自動(dòng)降級(jí)的問(wèn)題及解決
安裝Redis 7.1.0時(shí)因版本過(guò)舊與Python3.10不兼容,通過(guò)pip安裝依賴(lài)時(shí)遵循“版本約束”,導(dǎo)致Redis降級(jí)到<3.0,Booktype 項(xiàng)目依賴(lài)Redis <3.0,與Python3.10不兼容,解決方法是刪除Booktype依賴(lài),以避免版本沖突2025-12-12

