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文本生成二维码实例
Jan 06 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
python实战教程之自动扫雷
Jul 13 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
flask-restful使用总结
Dec 04 Python
Python3 使用pillow库生成随机验证码
Aug 26 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 Python
python解包概念及实例
Feb 17 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
模仿OSO的论坛(一)
2006/10/09 PHP
第十节--抽象方法和抽象类
2006/11/16 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
PHP持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
php打造属于自己的MVC框架
2012/03/07 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
PHP学习笔记之session
2018/05/06 PHP
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
Python实现多线程下载文件的代码实例
2014/06/01 Python
python调用API实现智能回复机器人
2018/04/10 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
Python txt文件如何转换成字典
2020/11/03 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
施工安全协议书
2013/12/11 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
企业文化学习心得体会
2016/01/21 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers