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程序中操作文件之flush()方法的使用教程
May 24 Python
Python安装第三方库的3种方法
Jun 21 Python
TensorFlow数据输入的方法示例
Jun 19 Python
python模块导入的细节详解
Dec 10 Python
python生成器与迭代器详解
Jan 01 Python
python基于C/S模式实现聊天室功能
Jan 09 Python
django fernet fields字段加密实践详解
Aug 12 Python
Django之编辑时根据条件跳转回原页面的方法
Aug 21 Python
Python小程序之在图片上加入数字的代码
Nov 26 Python
python+adb+monkey实现Rom稳定性测试详解
Apr 23 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
Elasticsearch 索引操作和增删改查
Apr 19 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 CLI实现简单的数据库实时监控调度
2009/07/01 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
Javascript UrlDecode函数代码
2010/01/09 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
2017/04/06 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
haskell实现多线程服务器实例代码
2013/11/26 Python
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
2019/04/30 Python
Django model select的多种用法详解
2019/07/16 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
ubuntu上安装python的实例方法
2019/09/30 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
路政管理毕业自荐书范文
2014/02/10 职场文书
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
生产文员岗位职责
2014/04/05 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
营运督导岗位职责
2015/04/10 职场文书
应收账款管理制度
2015/08/06 职场文书
Nebula Graph解决风控业务实践
2022/03/31 MySQL
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers
Python使用openpyxl模块处理Excel文件
2022/06/05 Python