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正则表达式判断字符串是否是全部小写示例
Dec 25 Python
python实现将文本转换成语音的方法
May 28 Python
对Python中type打开文件的方式介绍
Apr 28 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
简单了解Django应用app及分布式路由
Jul 24 Python
Django 项目重命名的实现步骤解析
Aug 14 Python
python manage.py runserver流程解析
Nov 08 Python
Jupyter Notebook输出矢量图实例
Apr 14 Python
python redis存入字典序列化存储教程
Jul 16 Python
浅析Python 序列化与反序列化
Aug 05 Python
python 基于wx实现音乐播放
Nov 24 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 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
php在线代理转向代码
2012/05/05 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
jquery获取节点名称
2015/04/26 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
js利用appendChild对标签进行排序的实现方法
2016/10/16 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
简单说明Python中的装饰器的用法
2015/04/24 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
使用Python实现分别输出每个数组
2019/12/06 Python
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
客服实习的个人自我鉴定
2013/10/20 职场文书
小区文明倡议书
2014/05/16 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
清明节随笔
2015/08/15 职场文书
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL