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实现面向对像的ASP程序实例
Nov 10 Python
详解Python的Flask框架中的signals信号机制
Jun 13 Python
理解生产者消费者模型及在Python编程中的运用实例
Jun 26 Python
利用Opencv中Houghline方法实现直线检测
Feb 11 Python
python实现list由于numpy array的转换
Apr 04 Python
python样条插值的实现代码
Dec 17 Python
Python查找文件中包含中文的行方法
Dec 19 Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 Python
解决django同步数据库的时候app models表没有成功创建的问题
Aug 09 Python
Pandas实现一列数据分隔为两列
May 18 Python
python处理写入数据代码讲解
Oct 22 Python
python switch 实现多分支选择功能
Dec 21 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静态类
2006/11/25 PHP
php上传图片类及用法示例
2016/05/11 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
php 数据结构之链表队列
2017/10/17 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
js活用事件触发对象动作
2008/08/10 Javascript
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
jQuery参数列表集合
2011/04/06 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
js创建数组的简单方法
2016/07/27 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
快速入门python学习笔记
2017/12/06 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
Python3离线安装Requests模块问题
2019/10/13 Python
Django权限控制的使用
2021/01/07 Python
学生的自我鉴定范文
2013/10/24 职场文书
学习张林森心得体会
2014/09/10 职场文书
大一学生个人总结
2015/02/15 职场文书
《静夜思》教学反思
2016/02/17 职场文书