zoukankan      html  css  js  c++  java
  • 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!
  • 相关阅读:
    嵌入式系统移植三部曲 王晓峰
    嵌入式系统移植三部曲 李炎朔
    ser and client.c 王晓峰
    李炎朔 编程分析
    嵌入式系统移植三步曲 赵晓晓
    嵌入式系统移植三步曲 孟明明
    现在 搞技术确实越来越不值钱了
    Linux C局域网通信程序 刘志卿
    Firefox全面兼容中国银联“在线支付”
    Linux常识型试题
  • 原文地址:https://www.cnblogs.com/FanMLei/p/10501037.html
Copyright © 2011-2022 走看看