PyQt: 鼠标点击拖动/拖拽移动窗口PyQt: 鼠标点击拖动/拖拽移动窗口PyQt: 鼠标点击拖动/拖拽移动窗口PyQt: 鼠标点击拖动/拖拽移动窗口
  • 首页
  • 博客
  • 书签
  • 文件
  • 分析
  • 登录

PyQt: 鼠标点击拖动/拖拽移动窗口

发表 admin at 2022年3月28日
类别
  • Practice
标签
import sys
import time

from PyQt5.Qt import *


class Window(QWidget):
    def __init__(self):
        super().__init__()
        # 鼠标左键按下标识
        self.mouse_left_button_press_flag = None
        self.set_ui()

    def set_ui(self):
        self.resize(300, 300)
        self.setWindowTitle("主窗口")
        # 如果设置了鼠标跟踪,鼠标移动即调用mouseMoveEvent方法,需在mouseMoveEvent方法中设置条件判断
        self.setMouseTracking(True)
        self.show()

    def mousePressEvent(self, a0) -> None:
        if a0.button() == Qt.LeftButton:
            self.mouse_left_button_press_flag = True
            self.mouse_inital_x = a0.globalX()
            self.mouse_inital_y = a0.globalY()
            self.window_inital_x = self.x()
            self.window_inital_y = self.y()

    def mouseMoveEvent(self, a0) -> None:
        if self.mouse_left_button_press_flag:
            mouse_move_x = a0.globalX() - self.mouse_inital_x
            mouse_move_y = a0.globalY() - self.mouse_inital_y
            window_x = self.window_inital_x + mouse_move_x
            window_y = self.window_inital_y + mouse_move_y
            self.move(window_x, window_y)

    def mouseReleaseEvent(self, a0) -> None:
        self.mouse_left_button_press_flag = False


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    sys.exit(app.exec_())

发表回复 取消回复

要发表评论,您必须先登录。

类别

  • Cat
  • Python
  • Django
  • Database
  • Html/CSS
  • JavaScript
  • Vue
  • RegExp
  • Maths/AI
  • PHP/Wordpress
  • Practice
  • Linux
  • Windows
  • Android
  • NAS
  • Software
  • Hardware
  • Network
  • SEO
  • English
  • Games
  • Recipes
  • General
  • Memorandum
  • Essays
  • 未分类

归档

©2015-2023 艾丽卡 Blog support@alaica.com
      ajax-loader