PyQt自定义环绕控件
作者:互联网
![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210207125642969.gif)
# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets as QtGui
from PyQt5 import QtCore
from PyQt5.QtGui import *
import glob
import random
import numpy as np
speed = 400
class circle_label(QtGui.QLabel):
def __init__(self,parent=None):
QtGui.QLabel.__init__(self, parent)
self._parent = parent
self.time_num=0
self.setWindowTitle("Tray!")
self.setAcceptDrops(True)
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground);
self.setWindowOpacity(1)
self._time=QtCore.QTimer()
self._time.start(10)
self.pic=QPixmap('circle.png')
self.setPixmap(self.pic)
self.setMask(self.pic.mask())
self.setAlignment(QtCore.Qt.AlignCenter)
self._time.timeout.connect(self.change_position)
def mousePressEvent(self,event):
if event.button()==QtCore.Qt.LeftButton:
self.dragPosition=event.globalPos()-self.frameGeometry().topLeft()
event.accept()
if event.button()==QtCore.Qt.RightButton:
pass
def mouseMoveEvent(self,event):
if event.buttons()& QtCore.Qt.LeftButton:
self.move(event.globalPos()-self.dragPosition)
event.accept()
def change_position(self):
r = self._parent.height()/1.2
a = (self._parent.pos().x()+ self._parent.width()/2)
b = (self._parent.pos().y() +self._parent.height()/2.5)
pos_data= ((speed-self.time_num)/speed)*2*np.pi
self.time_num+=1
if self.time_num>=speed:
self.time_num=0
x = a + r * np.cos(pos_data)
y = b + r * np.sin(pos_data)
self.move(x,y)
class circle_label1(QtGui.QLabel):
def __init__(self,parent=None):
QtGui.QLabel.__init__(self, parent)
self._parent = parent
self.time_num=0
self.setWindowTitle("Tray!")
self.setAcceptDrops(True)
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground);
self.setWindowOpacity(1)
self._time=QtCore.QTimer()
self._time.start(10)
self.pic=QPixmap('circle.png')
self.setPixmap(self.pic)
self.setMask(self.pic.mask())
self.setAlignment(QtCore.Qt.AlignCenter)
self._time.timeout.connect(self.change_position)
def mousePressEvent(self,event):
if event.button()==QtCore.Qt.LeftButton:
self.dragPosition=event.globalPos()-self.frameGeometry().topLeft()
event.accept()
if event.button()==QtCore.Qt.RightButton:
pass
def mouseMoveEvent(self,event):
if event.buttons()& QtCore.Qt.LeftButton:
self.move(event.globalPos()-self.dragPosition)
event.accept()
def change_position(self):
r = self._parent.height()/1.5
a = (self._parent.pos().x()+ self._parent.width()/2)
b = (self._parent.pos().y() +self._parent.height()/2.5)
pos_data= (self.time_num/speed)*2*np.pi
self.time_num+=1
if self.time_num>=speed:
self.time_num=0
x = a + r * np.cos(pos_data)
y = b + r * np.sin(pos_data)
self.move(x,y)
class Tray_(QtGui.QLabel):
def __init__(self, parent=None):
QtGui.QLabel.__init__(self, parent)
self.contorl=1
self.app=None
self.setWindowTitle("Tray!")
self.setAcceptDrops(True)
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground);
self.setWindowOpacity(1)
self._time=QtCore.QTimer()
self._image=QtGui.QLabel()
self._pic=QPixmap('pic1.png')
self._image.setPixmap(self._pic)
self._image.setMask(self._pic.mask())
self.layout = QtGui.QVBoxLayout()
self.layout.addWidget(self._image)
self.setLayout(self.layout)
self._image.setScaledContents(True)
self._image.setAlignment(QtCore.Qt.AlignCenter)
self._time.start(60000)
self.resize(100,100)
self.show()
def mousePressEvent(self,event):
if event.button()==QtCore.Qt.LeftButton:
self.dragPosition=event.globalPos()-self.frameGeometry().topLeft()
event.accept()
if event.button()==QtCore.Qt.RightButton:
pass
def mouseMoveEvent(self,event):
if event.buttons()& QtCore.Qt.LeftButton:
self.move(event.globalPos()-self.dragPosition)
event.accept()
def mouseDoubleClickEvent(self, event):
if event.buttons () == QtCore.Qt.LeftButton:
if self.contorl==1:
self.contorl=0
self.app = circle_label(self)
self.app1 = circle_label1(self)
self.app.show()
self.app1.show()
else:
self.contorl=1
if self.app!=None:
self.app.close()
self.app1.close()
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
dialog = Tray_()
dialog.show()
sys.exit(app.exec_())
标签:parent,控件,Qt,自定义,self,PyQt,._,QtCore,event 来源: https://blog.csdn.net/qq_38641985/article/details/113739267