zoukankan      html  css  js  c++  java
  • PyQt5--ButtonDrag

     1 # -*- coding:utf-8 -*-
     2 '''
     3 Created on Sep 21, 2018
     4 
     5 @author: SaShuangYiBing
     6 
     7 Comment: 
     8 '''
     9 import sys
    10 from PyQt5.QtCore import Qt,QMimeData
    11 from PyQt5.QtGui import QDrag
    12 from PyQt5.QtWidgets import QApplication,QWidget,QPushButton
    13 
    14 class Button(QPushButton):
    15     def __init__(self,title,parent):
    16         super().__init__(title,parent)
    17     
    18     def mouseMoveEvent(self, e):
    19         if e.buttons() != Qt.RightButton:
    20             return
    21         
    22         mimedata = QMimeData()
    23         drag = QDrag(self)
    24         drag.setMimeData(mimedata)
    25         drag.setHotSpot(e.pos()-self.rect().topLeft())
    26         dropAction = drag.exec_(Qt.MoveAction)
    27     
    28     def mousePressEvent(self, e):
    29         QPushButton.mousePressEvent(self,e)
    30         if e.button() == Qt.LeftButton:
    31             print ('Press')
    32             
    33 class New_test(QWidget):
    34     def __init__(self):
    35         super().__init__()
    36         self.initUI()
    37         
    38     def initUI(self):
    39         self.setAcceptDrops(True)
    40         self.button = Button('Button',self)
    41         self.button.move(100,65)
    42         
    43         self.setGeometry(300,300,280,150)
    44         self.setWindowTitle('Click or Move')
    45         self.show()
    46     
    47     def dragEnterEvent(self, e):
    48         e.accept()
    49         
    50     def dropEvent(self, e):
    51         position = e.pos()
    52         self.button.move(position)
    53         
    54         e.setDropAction(Qt.MoveAction)
    55         e.accept()
    56 
    57 if __name__ == '__main__':
    58     app = QApplication(sys.argv)
    59     ex = New_test()
    60     sys.exit(app.exec_())
    61         
    62         
    63         

    在Button上右键拖动时,按钮会跟随鼠标移动,如果是在Button左键时,会在控制台上打印出 "press"

  • 相关阅读:
    Dubbo源码分析系列---服务的发布
    Dubbo源码分析系列---扩展点加载
    Jdk动态代理和CGLIB动态代理大比拼
    定时任务的一些思路
    技术人的职业发展
    2017面试碎碎念
    Tiny Mapper
    RabbitMQ 简介
    Load Test Analyzer Overview
    2015 如期而至,你好
  • 原文地址:https://www.cnblogs.com/aziji/p/9685325.html
Copyright © 2011-2022 走看看