欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文詳解PyQt5中實(shí)現(xiàn)不規(guī)則窗口的顯示

 更新時(shí)間:2022年12月01日 14:08:52   作者:SongYuLong的博客  
這篇文章主要為大家詳細(xì)介紹了Python?PyQt5中實(shí)現(xiàn)不規(guī)則窗口的顯示的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下

PyQt5 不規(guī)則窗口的顯示

函數(shù)描述
setMask(self, QBitmap)
setMask(self, QRegion)
setMask()的作用是為調(diào)用它的控件增加一個(gè)遮罩,遮住所選區(qū)域以外的部分,使之看起來是透明的。它的參數(shù)可以為QBitmap或QRegion對(duì)象。
paintEvent(self, QPaintEvent)通過重載paintEvent()函數(shù)繪制窗口背景

QPixmap和QBitmap繪圖的效果對(duì)比

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPixmap, QPainter, QBitmap

class MyForm(QWidget):
    def __init__(self, parent=None):
        super(MyForm, self).__init__(parent)
        self.setWindowTitle("不規(guī)則窗口的實(shí)現(xiàn)例子")

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawPixmap(0, 0, 280, 390, QPixmap(r"./pyqt5/images/dog.jpg"))
        painter.drawPixmap(300, 0, 280, 390, QBitmap(r"./pyqt5/images/dog.jpg"))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = MyForm()
    form.show()
    sys.exit(app.exec_())

不可以拖動(dòng)的不規(guī)則窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPixmap, QPainter, QBitmap

class WinForm(QWidget):
    def __init__(self, parent=None):
        super(WinForm, self).__init__(parent)
        self.setWindowTitle("不規(guī)則窗口的實(shí)現(xiàn)例子")

        self.pix = QBitmap("./pyqt5/images/mask.png")
        self.resize(self.pix.size())
        self.setMask(self.pix)

    def paintEvent(self, event):
        painter = QPainter(self)
        # 在指定區(qū)域直接繪制窗口背景
        painter.drawPixmap(0, 0, self.pix.width(), self.pix.height(), QPixmap("./pyqt5/images/screen1.jpg"))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = WinForm()
    win.show()
    sys.exit(app.exec_())

可以拖動(dòng)的不規(guī)則窗口

import sys
from PyQt5.QtWidgets import QApplication  ,QWidget 
from PyQt5.QtGui import  QPixmap,   QPainter  ,  QCursor , QBitmap
from PyQt5.QtCore import Qt 

class ShapeWidget(QWidget):  
	def __init__(self,parent=None):  
		super(ShapeWidget,self).__init__(parent)
		self.setWindowTitle("不規(guī)則的,可以拖動(dòng)的窗體實(shí)現(xiàn)例子") 
		self.mypix()	

    # 顯示不規(guī)則 pic
	def mypix(self):
		self.pix = QBitmap( "./pyqt5/images/mask.png" )
		self.resize(self.pix.size())       
		self.setMask(self.pix)
		print( self.pix.size())
		self.dragPosition = None

	# 重定義鼠標(biāo)按下響應(yīng)函數(shù)mousePressEvent(QMouseEvent)和鼠標(biāo)移動(dòng)響應(yīng)函數(shù)mouseMoveEvent(QMouseEvent),使不規(guī)則窗體能響應(yīng)鼠標(biāo)事件,隨意拖動(dòng)。
	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:
		    # 當(dāng)左鍵移動(dòng)窗體修改偏移值
			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("./pyqt5/images/boy.png"))
			
if __name__ == '__main__':
    app=QApplication(sys.argv)
    form=ShapeWidget()
    form.show()
    app.exec_()

不規(guī)則窗口實(shí)現(xiàn)動(dòng)畫效果

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPixmap, QPainter, QCursor
from PyQt5.QtCore import Qt, QTimer

class ShapeWidget(QWidget):
    def __init__(self, parent=None):
        super(ShapeWidget, self).__init__(parent)
        self.i = 1
        self.mypix()
        self.timer = QTimer()
        self.timer.setInterval(500) # 定時(shí)器每500毫秒更新一次
        self.timer.timeout.connect(self.timeChange)
        self.timer.start()

    # 顯示不規(guī)則圖片
    def mypix(self):
        self.update()
        if self.i == 5:
            self.i = 1
        self.mypic = {1:'./pyqt5/images/left.png', 2:'./pyqt5/images/up.png', 3:'./pyqt5/images/right.png', 4:'./pyqt5/images/down.png'}
        self.pix = QPixmap(self.mypic[self.i], "0", Qt.AvoidDither | Qt.ThresholdDither | Qt.ThresholdAlphaDither)
        self.resize(self.pix.size())
        self.setMask(self.pix.mask())
        self.dragPosition = None

    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))

    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))

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawPixmap(0, 0, self.pix.width(), self.pix.height(), self.pix)

    def mouseDoubleClickEvent(self, event):
        if event.button() == 1:
            self.i += 1
            self.mypix()

    def timeChange(self):
        self.i += 1
        self.mypix()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = ShapeWidget()
    win.show()
    sys.exit(app.exec_())

加載GIF動(dòng)畫效果

import sys
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QMovie

class LoadingGifWin(QWidget):
    def __init__(self, parent=None):
        super(LoadingGifWin, self).__init__(parent)
        self.label = QLabel('', self)
        self.setFixedSize(128, 128)        
        self.setWindowFlags(Qt.Dialog | Qt.CustomizeWindowHint)
        self.movie = QMovie("./pyqt5/images/loading.gif")
        self.label.setMovie(self.movie)
        self.movie.start()
        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = LoadingGifWin()
    win.show()
    sys.exit(app.exec_())

到此這篇關(guān)于一文詳解PyQt5中實(shí)現(xiàn)不規(guī)則窗口的顯示的文章就介紹到這了,更多相關(guān)PyQt5不規(guī)則窗口顯示內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • OpenCV實(shí)戰(zhàn)記錄之基于分水嶺算法的圖像分割

    OpenCV實(shí)戰(zhàn)記錄之基于分水嶺算法的圖像分割

    在機(jī)器視覺中,有時(shí)需要對(duì)產(chǎn)品進(jìn)行檢測(cè)和計(jì)數(shù),其難點(diǎn)無非是對(duì)于產(chǎn)品的圖像分割,這篇文章主要給大家介紹了關(guān)于OpenCV實(shí)戰(zhàn)記錄之基于分水嶺算法的圖像分割的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • python 處理pdf加密文件的操作代碼

    python 處理pdf加密文件的操作代碼

    這篇文章主要介紹了python 處理pdf加密文件的操作代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • 詳解Python直接賦值,深拷貝和淺拷貝

    詳解Python直接賦值,深拷貝和淺拷貝

    這篇文章主要介紹了Python直接賦值,深拷貝和淺拷貝的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 利用Python將時(shí)間或時(shí)間間隔轉(zhuǎn)為ISO 8601格式方法示例

    利用Python將時(shí)間或時(shí)間間隔轉(zhuǎn)為ISO 8601格式方法示例

    國(guó)際標(biāo)準(zhǔn)化組織的國(guó)際標(biāo)準(zhǔn)ISO8601是日期和時(shí)間的表示方法,全稱為《數(shù)據(jù)存儲(chǔ)和交換形式·信息交換·日期和時(shí)間的表示方法》,下面這篇文章主要給大家介紹了關(guān)于利用Python將時(shí)間或時(shí)間間隔轉(zhuǎn)為ISO 8601格式的相關(guān)資料,需要的朋友可以參考下。
    2017-09-09
  • 使用setup.py安裝python包和卸載python包的方法

    使用setup.py安裝python包和卸載python包的方法

    這篇文章主要介紹了使用setup.py安裝python包和卸載python包的方法,大家參考使用吧
    2013-11-11
  • Python操作列表的常用方法分享

    Python操作列表的常用方法分享

    這篇文章主要介紹了Python操作列表的常用方法,需要的朋友可以參考下
    2014-02-02
  • Python利用Matplotlib繪圖無法顯示中文字體的解決方案

    Python利用Matplotlib繪圖無法顯示中文字體的解決方案

    在很長(zhǎng)一段時(shí)間里用Python繪圖,matplotlib都不能很好的顯示中文,下面這篇文章主要給大家介紹了關(guān)于Python利用Matplotlib繪圖無法顯示中文字體的解決方案,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Python函數(shù)中的作用域規(guī)則詳解

    Python函數(shù)中的作用域規(guī)則詳解

    這篇文章主要為大家詳細(xì)介紹了Python的作用域規(guī)則,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python中defaultdict與lambda表達(dá)式用法實(shí)例小結(jié)

    Python中defaultdict與lambda表達(dá)式用法實(shí)例小結(jié)

    這篇文章主要介紹了Python中defaultdict與lambda表達(dá)式用法,結(jié)合實(shí)例形式分析了Python中defaultdict與lambda表達(dá)式的功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-04-04
  • python使用dlib進(jìn)行人臉檢測(cè)和關(guān)鍵點(diǎn)的示例

    python使用dlib進(jìn)行人臉檢測(cè)和關(guān)鍵點(diǎn)的示例

    這篇文章主要介紹了python使用dlib進(jìn)行人臉檢測(cè)和關(guān)鍵點(diǎn)的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12

最新評(píng)論