• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    解决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自带的录屏只能录当前软件那个区域。。。。。。。

    就这样吧~

    补充:pyqt5_控件_自定义无边框窗体拖动

    我就废话不多说了,大家还是直接看代码吧~

    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    import sys
    class Example(QWidget):
      _startPos = None
      _endPos = None
      _isTracking = False
      def __init__(self):
        super().__init__()
        self._initUI()
      def _initUI(self):
        self.setFixedSize(QSize(400, 400))
        self.setWindowFlags(Qt.FramelessWindowHint) # 无边框
        self.show()
      def mouseMoveEvent(self, e: QMouseEvent): # 重写移动事件
        self._endPos = e.pos() - self._startPos
        self.move(self.pos() + self._endPos)
      def mousePressEvent(self, e: QMouseEvent):
        if e.button() == Qt.LeftButton:
          self._isTracking = True
          self._startPos = QPoint(e.x(), e.y())
      def mouseReleaseEvent(self, e: QMouseEvent):
        if e.button() == Qt.LeftButton:
          self._isTracking = False
          self._startPos = None
          self._endPos = None
    if __name__ == '__main__':
      app = QApplication(sys.argv)
      ex = Example()
      sys.exit(app.exec_())
    

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • PyQt5 实现给无边框widget窗口添加背景图片
    • Qt无边框窗口拖拽和阴影的实现方法
    • Qt透明无边框窗口的实现示例
    • Pyqt实现无边框窗口拖动以及窗口大小改变
    • PyQt5实现无边框窗口的标题拖动和窗口缩放
    • Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
    上一篇:PyQt5 实现给无边框widget窗口添加背景图片
    下一篇:PyQt 5 设置Logo图标和Title标题的操作
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    解决PyQt5 无边框后窗口的移动问题 解决,PyQt5,无,边框,后,窗口,