通过setMouseTracking实现用鼠标拖动控件
1 import sys
2 from PyQt5.Qt import *
3
4 class Mwindow(QWidget):
5 leftclick = False
6
7 def __init__(self):
8 super().__init__()
9 self.resize(500,500)
10 self.move(250,150)
11 self.setup_Ui()
12
13 def setup_Ui(self):
14 # self.btn = QPushButton(self)
15 # self.btn.setText("点击我")
16 # self.btn.move(230,150)
17 pass
18
19 # def mousePressEvent(self, evt) : (在窗口中直接拖动)
20 #
21 # if evt.button() == Qt.LeftButton:
22 # self.leftclick = True
23 # self.mouse_x = evt.globalX()
24 # self.mouse_y = evt.globalY()
25 # self.btn_x = self.btn.x()
26 # self.btn_y = self.btn.y()
27 #
28 #
29 # def mouseMoveEvent(self, evt):
30 # if self.leftclick == True:
31 # move_x = evt.globalX()-self.mouse_x
32 # move_y = evt.globalY()-self.mouse_y
33 # self.btn.move(self.btn_x+move_x,self.btn_y+move_y)
34 #
35 # def mouseReleaseEvent(self, evt3) :
36 # self.leftclick = False
37
38 class Mypussbutton(QPushButton):
39 longclick = False
40
41 def mousePressEvent(self, evt):
42 if evt.button() == Qt.LeftButton:
43 self.longclick = True
44 self.mouse_x = evt.globalX()
45 self.mouse_y = evt.globalY()
46 self.btn_x = self.x()
47 self.btn_y = self.y()
48
49 def mouseMoveEvent(self, evt):
50 if self.longclick == True:
51 move_x = evt.globalX() - self.mouse_x
52 move_y = evt.globalY() - self.mouse_y
53 self.move(self.btn_x+move_x,self.btn_y+move_y)
54 print(self.btn_x + move_x, self.btn_y + move_y)
55 def mouseReleaseEvent(self, evt):
56 self.longclick = False
57
58
59 if __name__ == '__main__':
60 app = QApplication(sys.argv)
61 win = Mwindow()
62 # win.setMouseTracking(True)
63 btn = Mypussbutton(win)
64 btn.setText("点击我")
65 btn.move(250,150)
66 btn.setMouseTracking(True)
67 win.show()
68 sys.exit(app.exec_())
mousePressEvent 中一定要有一个判定变量,避免鼠标移入控件时,PressEvent中对应变量没有赋值导致程序崩溃。
通过setMouseTracking实现用鼠标拖动控件的更多相关文章
- wxpython 中 用鼠标拖动控件 总结
#encoding: utf-8 import wx import os import noname class Frame( noname.MyFrame1 ): def __init__(self ...
- win10 uwp 拖动控件
我们会使用控件拖动,可以让我们做出好看的动画,那么我们如何移动控件,我将会告诉大家多个方法.其中第一个是最差的,最后的才是我希望大神你去用. Margin 移动 我们可以使用Margin移动,但这是w ...
- WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件
在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件.例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开.在这个过程中,控 ...
- C#设置鼠标在控件上面时,改变光标形状
//设置鼠标在控件上面时,改变光标形状 private void pictureBox_macroLogo_MouseHover(object sender, System.EventArgs e) ...
- (转)C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上
原文地址:http://www.cnblogs.com/08shiyan/archive/2011/04/14/2015758.html /********************** * 课题:将窗 ...
- 实现窗体随着鼠标移动(控件)--《用delphi开发共享软件》-15.1任务管理器
private //窗体移动: OldPos,NewPos:TPoint; bMove:Boolean; procedure TForm1.FormMouseDown(Sender: TObject; ...
- C# 在窗体上可拖动控件
最近做了一个标签打印配置功能,需要根据客户需求自定义标签格式.显示内容,这时就用到了后台生成控件,并且其控件可在窗口中进行拖动,这里仅为记录一下实现过程,方便以后使用. 结果图: 源码: using ...
- delphi 响应鼠标进入控件消息
procedure MSGEnter(var msg:TMessage);message CM_MOUSEENTER;//响应进入的消息 procedure MSGLeave(var msg: TMe ...
- Qt判断鼠标在控件上
QT判断鼠标是否在某子窗口控件上方 需要注意的是,子窗口获取geometry,是相对于父窗口的相对位置,QCursor::pos()获取的是鼠标绝对位置,要不将父窗口的相对位置进行换算,要不将鼠标的绝 ...
随机推荐
- Excel 如何实现以万为单位 保留两位小数 且不四舍五入
数据科学交流群,群号:189158789,欢迎各位对数据科学感兴趣的小伙伴的加入! =TEXT(INT(I18/100)*1000,"0!.00,万") 将I18替换成你要转化的单 ...
- equals()方法和hashCode()方法
1.equal()方法 2.hasCode()方法 2.1 Object的hashCode() 2.2 hashCode()的作用 3.String中equals()和hashCode()的实现 4. ...
- Spring Boot项目application.yml文件数据库配置密码加密
在Spring boot开发中,需要在application.yml文件里配置数据库的连接信息,或者在启动时传入数据库密码,如果不加密,传明文,数据库就直接暴露了,相当于"裸奔"了 ...
- Java之jdk环境变量配置
1.jdk下载(按平时下载,注意一下路径就行)2.配置环境变量 :JAVA_HOME.Path.ClassPath3.检查是否成功:(查一下版本,可省略).运行环境(java.javac) 2:电脑- ...
- EXCEL序列
- 小白的经典CNN复现(三):AlexNet
小白的经典CNN复现(三):AlexNet 锵锵--本系列的第三弹AlexNet终于是来啦(≧∀≦),到了这里,我们的CNN的结构就基本上和现在我们经常使用或者接触的一些基本结构差不多了,并且从这一个 ...
- AtCoder Beginner Contest 176 D - Wizard in Maze (BFS,双端队列)
题意:给你一张图,"."表示能走,"#表示不能走,步行可以向四周四个方向移动一个单位,使用魔法可以移动到周围\(5\)X\(5\)的空地,问能否从起点都早终点,并求最少使 ...
- Codeforces Round #578 (Div. 2) C. Round Corridor (思维,数论)
题意: 有一个分两层的圆盘,每层从12点方向均分插入\(n\)和\(m\)个隔板,当内层和外层的隔板相连时是不能通过的,有\(q\)个询问,每次给你内层或外层的两个点,判断是否能从一个点走到另外一个点 ...
- AcWing 239.奇偶游戏 (带权并查集/种类并查集)
题意:你和朋友玩游戏,有个一\(01\)序列,你每次给出一个区间,朋友会回答这个区间中的\(1\)的个数是奇数还是偶数,但是你亲爱的朋友可能在撒谎,问在哪个询问你能确定你的朋友在撒谎,输出回合数. 题 ...
- WPF 中的逻辑树(Logical Tree)与可视化元素树(Visual Tree)
一.前言 WPF 中有两种"树":逻辑树(Logical Tree)和可视化元素树(Visual Tree). Logical Tree 最显著的特点就是它完全由布局组件和控件 ...