电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python GUI庫圖形界面開發之PyQt5窗口背景與不規則窗口實例

瀏覽:4日期:2022-08-06 14:29:07

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

使用QSS設置窗口背景 使用QPalette設置窗口背景 實現PainEvent,使用QPainter繪制背景QSS設置窗口背景

在QSS中,我們可以使用Background或者background-color的方式來設置背景色,設置窗口背景色之后,子控件默認會繼承父窗口的背景色,如果想要為控件設置背景圖片或圖標,則可以使用setPixmap或則setIcon來完成。關于這兩個函數的用法,可以參考本博客下的PyQt5的基礎控件分欄

實例:QSS設置窗口背景

import sysfrom PyQt5.QtWidgets import QMainWindow, QApplicationapp = 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_())

運行效果圖如下

python GUI庫圖形界面開發之PyQt5窗口背景與不規則窗口實例

核心代碼如下

#設置對象名稱win.setObjectName('MainWindow')# #todo 1 設置窗口背景圖片win.setStyleSheet('#MainWindow{border-image:url(./images/python.jpg);}')

優化 使用setStyleSheet()設置窗口背景色,核心代碼和效果圖如下

#todo 2 設置窗口背景色win.setStyleSheet('#MainWindow{background-color: yellow}')

python GUI庫圖形界面開發之PyQt5窗口背景與不規則窗口實例

QPalette設置窗口背景

當使用QPalette(調試板)來設置背景圖片時,需要考慮背景圖片的尺寸

圖片尺寸可以文件管理器打開,右鍵屬性查看

當背景圖片的寬度高度大于窗口的寬度高度時,背景圖片會平鋪整個背景

當背景圖片寬度高度小于窗口的寬度高度時,則會加載多個背景圖片

實例:QPalette設置窗口背景

import sysfrom PyQt5.QtWidgets import QMainWindow, QApplicationfrom PyQt5.QtGui import QPalette, QBrush, QPixmapapp = 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_())

當背景圖片的寬度高度大于窗口的寬度高度時,背景圖片會平鋪整個背景

python GUI庫圖形界面開發之PyQt5窗口背景與不規則窗口實例

當背景圖片寬度高度小于窗口的寬度高度時,則會加載多個背景圖片

python GUI庫圖形界面開發之PyQt5窗口背景與不規則窗口實例

核心代碼如下

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 sysfrom PyQt5.QtWidgets import QApplication, QWidgetfrom PyQt5.QtGui import QPainter,QPixmapfrom PyQt5.QtCore import Qtclass 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())

效果如圖

python GUI庫圖形界面開發之PyQt5窗口背景與不規則窗口實例

核心代碼:設置窗口背景圖片

# #todo 2 設置背景圖片,平鋪到整個窗口,隨著窗口改變而改變pixmap = QPixmap('./images/screen1.jpg')painter.drawPixmap(self.rect(), pixmap)

python GUI庫圖形界面開發之PyQt5窗口背景與不規則窗口實例

QWidget類中比較重要的繪圖函數如表所示 函數 描述 setMask(self,QBitmap)setMask(self,QRegion) setMask()的作用是為調用它的控件增加一個遮罩,遮住所選區域以外的部分,使之看起來是透明的,它的參數可以為QBitmap或QRegion對象,此處調用QPixmap的mask()函數獲得圖片自身的遮罩,是一個QBitmap對象,在實例中使用的是PNG格式的圖片,它的透明部分就是一個遮罩 paintEvent(self,QPaintEvent) 通過重載paintEvent()函數繪制窗口背景 不規則窗口實例 1

實現不規則窗口的最簡單方式就是圖片素材不僅當遮罩層,還當背景圖片,通過重載paintEvent()函數繪制窗口背景

import sysfrom PyQt5.QtWidgets import QApplication,QWidgetfrom PyQt5.QtGui import QPixmap,QPainter,QBitmapclass MyForm(QWidget): def __init__(self,parent=None): super(MyForm, self).__init__(parent) #設置標題與初始窗口大小 self.setWindowTitle(’不規則窗口的實現例子’) self.resize(560,390) def paintEvent(self, QPaintEvent): painter=QPainter(self) #在指定位置繪制圖片 painter.drawPixmap(0,0,280,390,QPixmap(r’./images/dog.jpg’)) painter.drawPixmap(280,0,280,390,QBitmap(r’./images/dog.jpg’))if __name__ == ’__main__’: app=QApplication(sys.argv) form=MyForm() form.show() sys.exit(app.exec_())

運行效果如下

python GUI庫圖形界面開發之PyQt5窗口背景與不規則窗口實例

不規則窗口實例 2

使用兩張圖片,一張用來做遮罩來控制窗口的大小,然后在利用paintEvent()函數重繪另一張為窗口的背景圖。

import sysfrom PyQt5.QtWidgets import QApplication,QWidgetfrom PyQt5.QtGui import QPixmap,QPainter,QBitmapclass MyForm(QWidget): def __init__(self,parent=None): super(MyForm, self).__init__(parent) #設置標題與初始窗口大小 self.setWindowTitle(’不規則窗口的實現例子’) self.pix=QBitmap(’./images/mask.png’) self.resize(self.pix.size()) self.setMask(self.pix) def paintEvent(self, QPaintEvent): painter=QPainter(self) #在指定位置繪制圖片 painter.drawPixmap(0,0,self.pix.width(),self.pix.height(),QPixmap(r’./images/screen1.jpg’))if __name__ == ’__main__’: app=QApplication(sys.argv) form=MyForm() form.show() sys.exit(app.exec_())

運行效果如下

python GUI庫圖形界面開發之PyQt5窗口背景與不規則窗口實例

可以拖動的不規則窗口實例

第二個窗口的實例是不可以拖動的,這里實現可以拖動的功能

import sysfrom PyQt5.QtWidgets import QApplication, QWidgetfrom PyQt5.QtGui import QPixmap, QPainter, QCursor, QBitmapfrom PyQt5.QtCore import Qtclass ShapeWidget(QWidget): def __init__(self, parent=None): super(ShapeWidget, self).__init__(parent) self.setWindowTitle('不規則的,可以拖動的窗體實現例子') self.mypix() # 顯示不規則 pix def mypix(self): #獲得圖片自身的遮罩 self.pix = QBitmap('./images/mask.png') #將獲得的圖片的大小作為窗口的大小 self.resize(self.pix.size()) #增加一個遮罩 self.setMask(self.pix) #print(self.pix.size()) self.dragPosition = None # 重定義鼠標按下響應函數mousePressEvent(QMouseEvent) # 鼠標移動響應函數mouseMoveEvent(QMouseEvent),使不規則窗體能響應鼠標事件,隨意拖動。 def mousePressEvent(self, event): #鼠標左鍵按下 if event.button() == Qt.LeftButton: self.m_drag = True self.m_DragPosition = event.globalPos() - self.pos() event.accept() self.setCursor(QCursor(Qt.OpenHandCursor)) if event.button() == Qt.RightButton: self.close() def mouseMoveEvent(self, QMouseEvent): if Qt.LeftButton and self.m_drag: # 當左鍵移動窗體修改偏移值 self.move(QMouseEvent.globalPos() - self.m_DragPosition) QMouseEvent.accept() def mouseReleaseEvent(self, QMouseEvent): self.m_drag = False self.setCursor(QCursor(Qt.ArrowCursor)) # 一般 paintEvent 在窗體首次繪制加載, 要重新加載paintEvent # 需要重新加載窗口使用 self.update() or self.repaint() def paintEvent(self, event): painter = QPainter(self) #在指定位置繪制圖片 painter.drawPixmap(0, 0, self.width(), self.height(), QPixmap('./images/boy.png'))if __name__ == ’__main__’: app = QApplication(sys.argv) form = ShapeWidget() form.show() app.exec_()

運行效果如下

python GUI庫圖形界面開發之PyQt5窗口背景與不規則窗口實例

本文主要介紹了python GUI庫PyQt5窗口背景與不規則窗口實例,大家可以參考下,更多關于這方面的文章大家可以點擊下面的相關鏈接

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 引领中高档酒店加盟_含舍·美素酒店品牌官网 | 成都中天自动化控制技术有限公司 | 珠光砂保温板-一体化保温板-有釉面发泡陶瓷保温板-杭州一体化建筑材料 | 江西高职单独招生-江西单招考试-江西高职单招网 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | 净气型药品柜-试剂柜-无管道净气型通风柜-苏州毕恩思 | 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | 信阳市建筑勘察设计研究院有限公司| 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 无锡市珂妮日用化妆品有限公司|珂妮日化官网|洗手液厂家 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 据信,上课带着跳 D 体验-别样的课堂刺激感受引发网友热议 | 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 滑板场地施工_极限运动场地设计_滑板公园建造_盐城天人极限运动场地建设有限公司 | China plate rolling machine manufacturer,cone rolling machine-Saint Fighter | 冷却塔减速机器_冷却塔皮带箱维修厂家_凉水塔风机电机更换-广东康明冷却塔厂家 | 南溪在线-南溪招聘找工作、找房子、找对象,南溪综合生活信息门户! | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 手术示教系统-数字化手术室系统-林之硕医疗云智能视频平台 | 广州市哲铭油墨涂料有限公司,水性漆生产研发基地 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | 压力变送器-上海武锐自动化设备有限公司| 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 披萨石_披萨盘_电器家电隔热绵加工定制_佛山市南海区西樵南方综合保温材料厂 | 高压油管,液压接头,液压附件-烟台市正诚液压附件 | 拖链电缆_柔性电缆_伺服电缆_坦克链电缆-深圳市顺电工业电缆有限公司 | 济宁工业提升门|济宁电动防火门|济宁快速堆积门-济宁市统一电动门有限公司 | _网名词典_网名大全_qq网名_情侣网名_个性网名 | 防爆型气象站_农业气象站_校园气象站_农业四情监测系统「山东万象环境科技有限公司」 | 深圳网站建设-高端企业网站开发-定制网页设计制作公司 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 |