PYQT5窗体显示的几种型态(最前,透明。。。)

作一个窗体想让它总在最前或半透明窗体或可拖动,百度了下,就一行代码就实现了,确实比VC++实现的简单的多,顺便就一起写了一小段代码,对PYQT常用的几个窗体形态都用代码试了下,总结到一个窗体代码中,供初学小白要用时借签,代码中引用了一2.GIF动画,可自行找到一个GIF文件改名成2.gif后放在PY代码文件同一目录中即可。

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5 import QtCore
     
class AlwaysOnTopWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.is_dragging=False #定义窗体是否可整体被拖动开关
        self.setWindowTitle("总在最顶端的窗体类型示例")
        #self.resize(600,800) #设置了固定尺寸之后,尺寸便不可修改!
        self.setGeometry(300,100,600,800)
        # 创建按纽控件
        button01 = QPushButton('最顶端,无标题栏', self)
        button01.setGeometry(50,350,150,50)
        button01.clicked.connect(self.btnClick01)  # 当按钮被点击时,调用 btnClick01方法
        button02 = QPushButton('最顶端,有标题栏和关闭按纽', self)
        button02.setGeometry(250,350,250,50)
        button02.clicked.connect(self.btnClick02)  # 当按钮被点击时,调用 btnClick02方法
        button03 = QPushButton('最顶端,有标题栏和关闭按纽+最小化按纽', self)
        button03.setGeometry(50,450,350,50)
        button03.clicked.connect(self.btnClick03)  # 当按钮被点击时,调用 btnClick03方法
        button04 = QPushButton('恢复初始值', self)
        button04.setGeometry(50,550,150,50)
        button04.clicked.connect(self.btnClick04)  # 当按钮被点击时,调用 btnClick04方法
        button05 = QPushButton('设置为半透明窗体', self)
        button05.setGeometry(250,550,200,50)
        button05.setToolTip('透明度为0-1,o为全透明,1为不透明')
        button05.clicked.connect(self.btnClick05)  # 当按钮被点击时,调用btnClick05方法
        button06 = QRadioButton('窗体可整体拖动',self)
        button06.setGeometry(50,250,200,50)
        button06.clicked.connect(self.btnClick06)  # 当按钮被点击时,调用 btnClick06方法
        button07 = QRadioButton('窗体不可整体拖动',self)
        button07.setGeometry(280,250,250,50)
        button07.clicked.connect(self.btnClick07)  # 当按钮被点击时,调用 btnClick07方法
        button08 = QPushButton('退出', self)
        button08.setGeometry(250,650,100,50)
        button08.clicked.connect(self.btnClick08)  # 当按钮被点击时,调用btnClick08方法
        self.oldflags = self.windowFlags()                   #保存当前最初的窗体状态以便恢复    
        #self.setWindowFlags(oldflags | Qt.WindowStaysOnTopHint )   #示例:在原有窗体类型基础上增加一个最顶端的属性

        #self.setWindowFlags(Qt.Dialog | Qt.Tool | Qt.WindowStaysOnTopHint| Qt.WindowCloseButtonHint | Qt.WindowMinimizeButtonHint)  #重新设置窗口属性
        #self.setWindowFlags(Qt.Dialog | Qt.Tool | Qt.WindowStaysOnTopHint)  #会有一个关闭按纽

        self.setFixedSize(self.width(), self.height())             # 固定窗体大小
        self.setFocusPolicy(Qt.NoFocus)

        self.label=QLabel("",self)
        self.movie=QMovie('2.gif')
        self.label.setGeometry(10,50,200,80)
        self.label.setMovie(self.movie)
        self.movie.start()

       # 重写此方法但不调用父类实现,防止最小化
    #def focusOutEvent(self, event):
    #    pass
    def btnClick01(self):
        self.setWindowFlags(Qt.WindowStaysOnTopHint|Qt.FramelessWindowHint) 
        self.show()
    def btnClick02(self):
        self.setWindowFlags(Qt.WindowStaysOnTopHint|Qt.WindowCloseButtonHint)
        self.show()
    def btnClick03(self):
       self.setWindowFlags(Qt.WindowStaysOnTopHint|Qt.WindowCloseButtonHint|Qt.WindowMinimizeButtonHint)
       self.show()
    def btnClick04(self):
        self.setWindowFlags(self.oldflags)
        self.show()   
    def btnClick05(self):
        self.setWindowOpacity(0.2)
    def btnClick06(self):
        self.is_dragging=True
    def btnClick07(self):
        self.is_dragging=False
    def btnClick08(self):
        self.movie.stop()
        super(self).close()  #调用父类close()
        self.close()         #关不了?只能加上面一句,否则窗体好象一直运行着,并没有close()
    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            if self.is_dragging:
                self.drag_position = event.globalPos() - self.frameGeometry().topLeft()
            event.accept()
    def mouseMoveEvent(self, event):
        if self.is_dragging:
            self.move(event.globalPos() - self.drag_position)
            event.accept()
    def mouseReleaseEvent(self, event):
        if self.is_dragging and event.button() == Qt.LeftButton:
            #self.is_dragging = False
            event.accept()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = AlwaysOnTopWindow()
    window.show()
    sys.exit(app.exec())

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mr_LuoWei2009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值