最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyQt5實現(xiàn)仿QQ貼邊隱藏功能的實例代碼

 更新時間:2020年05月24日 10:41:54   作者:༺北海以北的等待༻꧂  
這篇文章主要介紹了PyQt5實現(xiàn)仿QQ貼邊隱藏功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

此程序大致功能為:可變換顏色,貼邊隱藏。

變換顏色思路

QPalette( [ˈpælət] 調(diào)色板)類相當于對話框或控件的調(diào)色板,它管理著控件或窗體的所有顏色信息,每個窗體或控件都包含一個QPalette對象,在顯示時按照它的QPalette對象中對各部分各狀態(tài)下的顏色的描述來進行繪制。

實現(xiàn)代碼

def Painting(self):
 color = random.choice(["CCFFFF","CC6699","CC99FF","99CCFF"])
 palette1 = QPalette()
 palette1.setColor(self.backgroundRole(),
    QColor("#{}".format(color))) # 改變窗體顏色
 self.setPalette(palette1)

貼邊隱藏思路

可以判斷窗口的位置,當與邊緣的距離小于某值時,再判斷鼠標是否在窗口,判斷是否隱藏窗口;
根據(jù)隱藏窗口的隱藏位置,獲得某塊區(qū)域,當鼠標在這個位置時,顯示窗口。

實現(xiàn)代碼

鼠標進入事件,調(diào)用hide_or_show判斷是否該顯示

def enterEvent(self, event):
 self.hide_or_show('show', event)

鼠標離開事件,調(diào)用hide_or_show判斷是否該隱藏

def leaveEvent(self, event):
 self.hide_or_show('hide', event)

鼠標點擊事件

def mousePressEvent(self, event):
 if event.button() == Qt.LeftButton:
  self.dragPosition = event.globalPos() - self.frameGeometry(
  ).topLeft()
  QApplication.postEvent(self, QEvent(174))
  event.accept()

捕捉鼠標移動事件

def mouseMoveEvent(self, event):
 if event.buttons() == Qt.LeftButton:
  try:
  self.move(event.globalPos() - self.dragPosition)
  event.accept()
  except:pass

判斷是否該隱藏

def hide_or_show(self, mode, event):
 pos = self.frameGeometry().topLeft()
 if mode == 'show' and self.moved:
  if pos.x() + WINDOW_WEIGHT >= SCREEN_WEIGHT: # 右側顯示
  self.startAnimation(SCREEN_WEIGHT - WINDOW_WEIGHT + 2, pos.y())
  event.accept()
  self.moved = False
  elif pos.x() <= 0: # 左側顯示
  self.startAnimation(0,pos.y())
  event.accept()
  self.moved = False
  elif pos.y() <= 0: # 頂層顯示
  self.startAnimation(pos.x(),0)
  event.accept()
  self.moved = False
 elif mode == 'hide':
  if pos.x() + WINDOW_WEIGHT >= SCREEN_WEIGHT: # 右側隱藏
  self.startAnimation(SCREEN_WEIGHT - 2,pos.y())
  event.accept()
  self.moved = True
  elif pos.x() <= 2: # 左側隱藏
  self.startAnimation(2 - WINDOW_WEIGHT,pos.y())
  event.accept()
  self.moved = True
  elif pos.y() <= 2: # 頂層隱藏
  self.startAnimation(pos.x(),2 - WINDOW_HEIGHT)
  event.accept()
  self.moved = True

將劃入劃出作為屬性動畫

def startAnimation(self,width,height):
 animation = QPropertyAnimation(self,b"geometry",self)
 startpos = self.geometry()
 animation.setDuration(200)
 newpos = QRect(width,height,startpos.width(),startpos.height())
 animation.setEndValue(newpos)
 animation.start()

完整代碼

import sys,random
from PyQt5.QtGui import QPalette,QColor
from PyQt5.QtWidgets import QWidget,QVBoxLayout,QPushButton,\
 QDesktopWidget,QApplication
from PyQt5.QtCore import Qt,QRect,QEvent,QPoint
from PyQt5.Qt import QCursor,QPropertyAnimation

SCREEN_WEIGHT = 1920
SCREEN_HEIGHT = 1080
WINDOW_WEIGHT = 300
WINDOW_HEIGHT = 600
class Ui_Form(QWidget):
 def __init__(self):
 self.moved = False
 super(Ui_Form,self).__init__()
 self.setupUi()
 self.resize(WINDOW_WEIGHT, WINDOW_HEIGHT)
 self.show()
 def setupUi(self):
 self.setWindowFlags(Qt.FramelessWindowHint
    | Qt.WindowStaysOnTopHint
    | Qt.Tool) # 去掉標題欄
 self.widget = QWidget()
 self.Layout = QVBoxLayout(self.widget)
 self.Layout.setContentsMargins(0,0,0,0)
 self.setLayout(self.Layout)
 self.setWindowFlag(Qt.Tool)
 self.main_widget = QWidget()
 self.Layout.addWidget(self.main_widget)
 self.paint = QPushButton(self.main_widget)
 self.paint.setText("改變顏色")
 self.paint.move(QPoint(120,200))
 self.paint.clicked.connect(self.Painting)
 self.exit = QPushButton(self.main_widget)
 self.exit.setText(" 退出 ")
 self.exit.move(QPoint(120,400))
 self.exit.clicked.connect(lambda:exit(0))
 self.setStyleSheet('''
  QPushButton {
  color: rgb(137, 221, 255);
  background-color: rgb(37, 121, 255);
  border-style:none;
  border:1px solid #3f3f3f;
  padding:5px;
  min-height:20px;
  border-radius:15px;
  }
  ''')
 def Painting(self):
 color = random.choice(["CCFFFF","CC6699","CC99FF","99CCFF"])
 palette1 = QPalette()
 palette1.setColor(self.backgroundRole(),
    QColor("#{}".format(color))) # 改變窗體顏色
 self.setPalette(palette1)
 def enterEvent(self, event):
 self.hide_or_show('show', event)
 def leaveEvent(self, event):
 self.hide_or_show('hide', event)
 def mousePressEvent(self, event):
 if event.button() == Qt.LeftButton:
  self.dragPosition = event.globalPos() - self.frameGeometry(
  ).topLeft()
  QApplication.postEvent(self, QEvent(174))
  event.accept()
 def mouseMoveEvent(self, event):
 if event.buttons() == Qt.LeftButton:
  try:
  self.move(event.globalPos() - self.dragPosition)
  event.accept()
  except:pass
 #def mouseReleaseEvent(self, event):
 #self.moved = True
 #self.hide_or_show('show', event)
 def hide_or_show(self, mode, event):
 pos = self.frameGeometry().topLeft()
 if mode == 'show' and self.moved:
  if pos.x() + WINDOW_WEIGHT >= SCREEN_WEIGHT: # 右側顯示
  self.startAnimation(SCREEN_WEIGHT - WINDOW_WEIGHT + 2, pos.y())
  event.accept()
  self.moved = False
  elif pos.x() <= 0: # 左側顯示
  self.startAnimation(0,pos.y())
  event.accept()
  self.moved = False
  elif pos.y() <= 0: # 頂層顯示
  self.startAnimation(pos.x(),0)
  event.accept()
  self.moved = False
 elif mode == 'hide':
  if pos.x() + WINDOW_WEIGHT >= SCREEN_WEIGHT: # 右側隱藏
  self.startAnimation(SCREEN_WEIGHT - 2,pos.y())
  event.accept()
  self.moved = True
  elif pos.x() <= 2: # 左側隱藏
  self.startAnimation(2 - WINDOW_WEIGHT,pos.y())
  event.accept()
  self.moved = True
  elif pos.y() <= 2: # 頂層隱藏
  self.startAnimation(pos.x(),2 - WINDOW_HEIGHT)
  event.accept()
  self.moved = True
 def startAnimation(self,width,height):
 animation = QPropertyAnimation(self,b"geometry",self)
 startpos = self.geometry()
 animation.setDuration(200)
 newpos = QRect(width,height,startpos.width(),startpos.height())
 animation.setEndValue(newpos)
 animation.start()
if __name__ == "__main__":
 app = QApplication(sys.argv)
 ui = Ui_Form()
 sys.exit(app.exec_())

總結

到此這篇關于PyQt5實現(xiàn)仿QQ貼邊隱藏功能的文章就介紹到這了,更多相關PyQt5實現(xiàn)隱藏內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python機器學習之基礎概述

    Python機器學習之基礎概述

    今天帶大家回顧python機器學習的相關知識,文中非常詳細的介紹了Python機器學習的基礎概述,算法分類及研究內(nèi)容,需要的朋友可以參考下
    2021-05-05
  • Python全棧之進程和守護進程

    Python全棧之進程和守護進程

    這篇文章主要為大家介紹了Python進程和守護進程,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python Grid使用和布局詳解

    Python Grid使用和布局詳解

    這篇文章主要為大家詳細介紹了Python Grid使用和布局,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python實現(xiàn)掃雷游戲

    python實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • python jieba庫的基本使用

    python jieba庫的基本使用

    這篇文章主要介紹了python jieba庫的基本使用,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • PyCharm專業(yè)最新版2019.1安裝步驟(含激活碼)

    PyCharm專業(yè)最新版2019.1安裝步驟(含激活碼)

    這篇文章主要介紹了PyCharm專業(yè)最新版2019.1安裝步驟(含激活碼),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • python版簡單工廠模式

    python版簡單工廠模式

    這篇文章主要為大家詳細介紹了python版簡單工廠模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Python函數(shù)裝飾器的使用詳解

    Python函數(shù)裝飾器的使用詳解

    大家好,本篇文章主要講的是Python函數(shù)裝飾器的使用詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • python實現(xiàn)圖片文件批量重命名

    python實現(xiàn)圖片文件批量重命名

    這篇文章主要為大家詳細介紹了python實現(xiàn)圖片文件批量重命名,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • python實現(xiàn)最小二乘法的方法詳解

    python實現(xiàn)最小二乘法的方法詳解

    這篇文章主要介紹了如何基于python實現(xiàn)最小二乘法的方法,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2024-02-02

最新評論

军事| 凤阳县| 潢川县| 育儿| 子长县| 凤庆县| 崇仁县| 长子县| 天等县| 嘉黎县| 红原县| 屏东县| 涟水县| 鹤山市| 高州市| 玉溪市| 宿迁市| 邵武市| 辉县市| 鱼台县| 崇礼县| 西乡县| 尖扎县| 库伦旗| 浦东新区| 新沂市| 肥西县| 清远市| 永顺县| 莱芜市| 闵行区| 民勤县| 桑植县| 荆门市| 东乡| 中山市| 华安县| 平罗县| 峨眉山市| 偃师市| 廊坊市|