• PyQt5无边框后窗口的移动方法


    由于隐藏了标题栏无法通过点击标题栏来实现窗口的移动,这时候我们可以通过鼠标事件来移动窗口

    第一步:判断鼠标左键是否被按下,如果按下则将flag设为True并获取当前的位置

    第二步:判断鼠标是否移动并且左键被按下,若移动了计算移动的距离在移动窗口

    第三步:若鼠标释放了则将flag设为False

    具体做法:重写窗口类自带的三个函数

        def mousePressEvent(self, event):
            if event.button()==Qt.LeftButton:
                self.m_flag=True
                self.m_Position=event.globalPos()-self.pos() #获取鼠标相对窗口的位置
                event.accept()
                self.setCursor(QCursor(Qt.OpenHandCursor))  #更改鼠标图标
                
        def mouseMoveEvent(self, QMouseEvent):
            if Qt.LeftButton and self.m_flag:  
                self.move(QMouseEvent.globalPos()-self.m_Position)#更改窗口位置
                QMouseEvent.accept()
                
        def mouseReleaseEvent(self, QMouseEvent):
            self.m_flag=False
            self.setCursor(QCursor(Qt.ArrowCursor))

    最后最小化和关闭可以设置两个按钮,通过点击按钮来触发

        @pyqtSlot()
        def on_pushButton_clicked(self):
            """
            关闭窗口
            """
            self.close()
        
        @pyqtSlot()
        def on_pushButton_2_clicked(self):
            """
            最小化窗口
            """
            self.showMinimized()


    ps :设置无边框和背景透明

    # 设置窗体无边框
    # self.setWindowFlags(Qt.FramelessWindowHint)
    # 设置背景透明
    # self.setAttribute(Qt.WA_TranslucentBackground)

    效果图


    win10自带的录屏只能录当前软件那个区域。。。。。。。

    就这样吧

    努力成为一名GEEK!
  • 相关阅读:
    Ubuntu下安装git
    curl: (48) An unknown option was passed in to libcurl怎么解决
    python中如何删除列表中的所有元素
    北京游园有感
    keras 实现人工神经网络
    scikit-learn实现简单的决策树
    angularjs实战
    Ajax实战(原生)
    7.DockerCompose 搭建 Redis
    使用element中的el-upload获取本地文件并转为base64码实现预览
  • 原文地址:https://www.cnblogs.com/FanMLei/p/10501037.html
Copyright © 2020-2023  润新知