PyQt5实现让QScrollArea支持鼠标拖动的操作方法


Posted in Python onJune 19, 2019

如下所示:

#!/usr/bin/evn python3
# -*- coding: utf-8 -*-
 
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QScrollArea, QLabel)
from PyQt5.QtCore import QEvent
 
 
class TestWindow(QWidget):
	def __init__(self):
		super(TestWindow, self).__init__()
		self.resize(800, 600)
		self.move(0, 0)
		# self.setMouseTracking(False)
		self.last_time_move = 0
		self.initUI()
 
	def initUI(self):
		self.central_widget = QWidget(self)
 
		self.scroll_area = QScrollArea(self)
		self.scroll_area.setGeometry(0, 0, 400, 400)
		self.scroll_area.setWidgetResizable(True)
		self.scroll_bar = self.scroll_area.verticalScrollBar()
 
		self.scroll_contents = QWidget()
		self.scroll_contents.setGeometry(0, 0, 400, 800)
		self.scroll_contents.setMinimumSize(380, 1000)
 
		self.label_1 = QLabel(self.scroll_contents)
		self.label_1.move(50, 100)
		self.label_1.setText("HelloRyan")
 
		self.label_2 = QLabel(self.scroll_contents)
		self.label_2.move(50, 200)
		self.label_2.setText("你好")
 
		self.label_3 = QLabel(self.scroll_contents)
		self.label_3.move(50, 300)
		self.label_3.setText("-----------")
 
		self.label_4 = QLabel(self.scroll_contents)
		self.label_4.move(50, 400)
		self.label_4.setText("542543255235432543252")
 
		self.label_5 = QLabel(self.scroll_contents)
		self.label_5.move(50, 500)
		self.label_5.setText("5432543262542")
 
		self.label_6 = QLabel(self.scroll_contents)
		self.label_6.move(50, 600)
		self.label_6.setText("4325432532")
 
		self.scroll_area.setWidget(self.scroll_contents)
		self.scroll_area.installEventFilter(self)
 
	# def mouseMoveEvent(self, event):
	# 	if event.pos().x() > 0 and event.pos().x() < 400 and event.pos().y() > 0 and event.pos().y() < 400:
	# 		if self.last_time_move == 0:
	# 			self.last_time_move = event.pos().y()
	#
	# 		distance = self.last_time_move - event.pos().y()
	# 		self.scroll_bar.setValue(self.scroll_bar.value() + distance)
	#
	# 		self.last_time_move = event.pos().y()
	# 		print("move%d" % event.pos().y())
	#
	# def mouseReleaseEvent(self, event):
	# 	self.last_time_move = 0
	# 	print("up")
 
	def eventFilter(self, source, event):
		if event.type() == QEvent.MouseMove:
			print(event.pos().y())
			
			if self.last_time_move == 0:
				self.last_time_move = event.pos().y()
				
			distance = self.last_time_move - event.pos().y()
			self.scroll_bar.setValue(self.scroll_bar.value() + distance)
			self.last_time_move = event.pos().y()
			
		elif event.type() == QEvent.MouseButtonRelease:
			self.last_time_move = 0
		return QWidget.eventFilter(self, source, event)
 
 
if __name__ == "__main__":
	app = QApplication(sys.argv)
	test = TestWindow()
	test.show()
	sys.exit(app.exec_())

PyQt5实现让QScrollArea支持鼠标拖动的操作方法

以上这篇PyQt5实现让QScrollArea支持鼠标拖动的操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
python如何对实例属性进行类型检查
Mar 20 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
Mar 22 Python
python [:3] 实现提取数组中的数
Nov 27 Python
python飞机大战pygame游戏框架搭建操作详解
Dec 17 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
Feb 02 Python
python 镜像环境搭建总结
Sep 23 Python
pyqt 实现为长内容添加滑轮 scrollArea
Jun 19 #Python
在Qt中正确的设置窗体的背景图片的几种方法总结
Jun 19 #Python
梅尔倒谱系数(MFCC)实现
Jun 19 #Python
python 中的列表生成式、生成器表达式、模块导入
Jun 19 #Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 #Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 #Python
PyQt5 对图片进行缩放的实例
Jun 18 #Python
You might like
解析如何用php screw加密php源代码
2013/06/20 PHP
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
Mootools 1.2教程 事件处理
2009/09/15 Javascript
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
python绘制多个曲线的折线图
2020/03/23 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
Python实现搜索算法的实例代码
2020/01/02 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
python 爬虫请求模块requests详解
2020/12/04 Python
sort命令的作用和用法
2012/11/04 面试题
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
vue实现同时设置多个倒计时
2021/05/20 Vue.js
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python