做淘宝网站要多少钱,上传下载网站建设,网站建设怎么好,vs做网站开发此程序大致功能为#xff1a;可变换颜色#xff0c;贴边隐藏。变换颜色思路QPalette( [ˈplət] 调色板)类相当于对话框或控件的调色板#xff0c;它管理着控件或窗体的所有颜色信息#xff0c;每个窗体或控件都包含一个QPalette对象#xff0c;在显示时按照它的QPalette对…此程序大致功能为可变换颜色贴边隐藏。变换颜色思路QPalette( [ˈpælət] 调色板)类相当于对话框或控件的调色板它管理着控件或窗体的所有颜色信息每个窗体或控件都包含一个QPalette对象在显示时按照它的QPalette对象中对各部分各状态下的颜色的描述来进行绘制。实现代码def Painting(self): color random.choice([CCFFFF,CC6699,CC99FF,99CCFF]) palette1 QPalette() palette1.setColor(self.backgroundRole(), QColor(#{}.format(color))) # 改变窗体颜色 self.setPalette(palette1)贴边隐藏思路可以判断窗口的位置当与边缘的距离小于某值时再判断鼠标是否在窗口判断是否隐藏窗口根据隐藏窗口的隐藏位置获得某块区域当鼠标在这个位置时显示窗口。实现代码鼠标进入事件调用hide_or_show判断是否该显示def enterEvent(self, event): self.hide_or_show(show, event)鼠标离开事件调用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,bgeometry,self) startpos self.geometry() animation.setDuration(200) newpos QRect(width,height,startpos.width(),startpos.height()) animation.setEndValue(newpos) animation.start()完整代码import sys,randomfrom PyQt5.QtGui import QPalette,QColorfrom PyQt5.QtWidgets import QWidget,QVBoxLayout,QPushButton, QDesktopWidget,QApplicationfrom PyQt5.QtCore import Qt,QRect,QEvent,QPointfrom PyQt5.Qt import QCursor,QPropertyAnimationSCREEN_WEIGHT 1920SCREEN_HEIGHT 1080WINDOW_WEIGHT 300WINDOW_HEIGHT 600class 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,bgeometry,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_())源码获取加群哦1136192749