# -*- coding:utf-8 -*-
'''
Created on Sep 21, 2018 @author: SaShuangYiBing Comment:
'''
import sys
from PyQt5.QtCore import Qt,QMimeData
from PyQt5.QtGui import QDrag
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton class Button(QPushButton):
def __init__(self,title,parent):
super().__init__(title,parent) def mouseMoveEvent(self, e):
if e.buttons() != Qt.RightButton:
return mimedata = QMimeData()
drag = QDrag(self)
drag.setMimeData(mimedata)
drag.setHotSpot(e.pos()-self.rect().topLeft())
dropAction = drag.exec_(Qt.MoveAction) def mousePressEvent(self, e):
QPushButton.mousePressEvent(self,e)
if e.button() == Qt.LeftButton:
print ('Press') class New_test(QWidget):
def __init__(self):
super().__init__()
self.initUI() def initUI(self):
self.setAcceptDrops(True)
self.button = Button('Button',self)
self.button.move(100,65) self.setGeometry(300,300,280,150)
self.setWindowTitle('Click or Move')
self.show() def dragEnterEvent(self, e):
e.accept() def dropEvent(self, e):
position = e.pos()
self.button.move(position) e.setDropAction(Qt.MoveAction)
e.accept() if __name__ == '__main__':
app = QApplication(sys.argv)
ex = New_test()
sys.exit(app.exec_())

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

PyQt5--ButtonDrag的更多相关文章

  1. 用 eric6 与 PyQt5 实现python的极速GUI编程(系列04)---- PyQt5自带教程:地址簿(address book)

    [引子] 在PyQt5自带教程中,地址簿(address book)程序没有完全实现界面与业务逻辑分离. 本文我打算用eric6+PyQt5对其进行改写,以实现界面与逻辑完全分离. [概览] 1.界面 ...

  2. PyQt5+Python3.5.2-32bit开发环境搭建

      1.基本环境. Window 8.1 64bit Python3.5.2-32bit.exe PyQt5 2.安装python. 去官网下载32位版本的python3.5.2(就是x86那个) 备 ...

  3. python3使用pyqt5制作一个超简单浏览器

    我们使用的是QWebview模块,这里也主要是展示下QWebview的用法. 之前在网上找了半天的解析网页的内容,都不是很清楚. 这是核心代码: webview = Qwebview() webvie ...

  4. Pyqt5 获取命令行参数sys.argv

    大家有没有注意到,很多软件都能接收第三方应用触发命令行参数,根据参数打开想要的效果. 在windows任务管理器调取命令行列,我们同样能看到进程中有好多是带有参数的. 现在,我们用Pyqt5 (Py3 ...

  5. pyqt5 开发环境

    pyqt5 pycharm mac下开发环境 brew install python3 安装python3 brew install pyqt5 配置pycharm http://blog.csdn. ...

  6. pyqt5

    使用python爬虫需要使用webkit执行javascript,查找资料可使用pyqt5,在此记录下安装步骤 windows 安装pyqt5 操作webkit 可用版本 1. 下载python 3. ...

  7. pyqt5安装

    花了一天时间,终于是装好了. 这东西硬是把我从Python2掰弯成了Python3 本来用pip安装了一个pyqt,但是后来才发现,这是个x64版本的. 我不知道啊! 我以为是还要装qt5 所以我把q ...

  8. PyQt5应用与实践

    一个典型的GUI应用程序可以抽象为:主界面(菜单栏.工具栏.状态栏.内容区域),二级界面(模态.非模态),信息提示(Tooltip),程序图标等组成.本篇根据作者使用PyQt5编写的一个工具,介绍如何 ...

  9. ubuntu搭建pyqt5开发环境

    到PyQt官网去下载最新版本 https://www.riverbankcomputing.com/software/pyqt/download5 根据提示我们首先应该安装SIP,什么是SIP呢,百度 ...

  10. Ubuntu 14.04下搭建Python3.4 + PyQt5.3.2 + Eric6.0开发平台

    引言 找了很多Python GUI工具集,还是觉得PyQt比较理想,功能强大跨平台,还支持界面设计器.花一天时间折腾了Ubuntu14.04(32位)+ Python3.4 + Qt5.3.2 + P ...

随机推荐

  1. Find the Top 10 commands in your linux box!

    history | awk '{print $2;}' | grep -v '^./' | sort -d | uniq -c | sort -nr | head -n 10 grep,  '-v' ...

  2. Java 的字节流文件读取(二)

    接着上篇文章,我们继续来学习 Java 中的字节流操作. 装饰者缓冲流 BufferedInput/OutputStream 装饰者流其实是基于一种设计模式「装饰者模式」而实现的一种文件 IO 流,而 ...

  3. Angular2入门:TypeScript的类型 - 类型、null、undefined

  4. FLV 封装格式解析

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10662941.html FLV (Flash Video) 是由 Adobe 公司推出的 ...

  5. 使用Asp.Net Core MVC 开发项目实践[第三篇:基于EF Core的扩展]

    上篇我们说到了EFCore的基础使用,这篇我们将讲解下基于EFCore的扩展. 我们在Mango.Framework.EFCore类库项目中创建一个类名EFExtended的扩展类,并且引入相关的命名 ...

  6. openssl genrsa

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html genrsa用于生成RSA私钥,不会生成公钥,因为公钥提取自私钥,如果需要查 ...

  7. Hadoop专有名词

    Hadoop专有名词 一. HDFS 二. MapReduce 1.MRAppMaster:MapReduce Application Master 负责整个过程调度和协调的 2.MapTask:在M ...

  8. c#方法转异步例子

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. [css] css3 中的新特性加强记忆

    css3被拆分成如下的小模块,选择器,盒模型,背景和边框,文字特效,2D/3D转换,动画,多列布局和用户界面 2D转换 使用transform:属性来为元素设置2D转换,兼容浏览器加前缀 –webki ...

  10. JVM内存:年轻代、老年代、永久代(推荐 转)

    参考文章: 1.Java 新生代.老年代.持久代.元空间 2.Java内存与垃圾回收调优 3.方法区的Class信息,又称为永久代,是否属于Java堆? Java 中的堆是 JVM 所管理的最大的一块 ...