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发送邮件实例讲解(python发邮件附件可以使用email模块实现)
Dec 03 Python
tornado捕获和处理404错误的方法
Feb 26 Python
python中pycurl库的用法实例
Sep 30 Python
在Python中使用__slots__方法的详细教程
Apr 28 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 Python
python设置表格边框的具体方法
Jul 17 Python
pycharm专业版远程登录服务器的详细教程
Sep 15 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 Python
Python如何配置环境变量详解
May 18 Python
golang特有程序结构入门教程
Jun 02 Python
详解Python常用的魔法方法
Jun 03 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的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
php上传图片类及用法示例
2016/05/11 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
JS中的事件委托实例浅析
2018/03/22 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
使用Python实现一个简单的项目监控
2015/03/31 Python
python Pygame的具体使用讲解
2017/11/03 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
周鸿祎:教你写创业计划书
2013/12/30 职场文书
房地产销售经理岗位职责
2014/01/01 职场文书
办公室秘书自我鉴定
2014/01/18 职场文书
小学生获奖感言范文
2014/02/02 职场文书
合作意向书
2014/07/30 职场文书
伏羲庙导游词
2015/02/09 职场文书
入党转正介绍人意见
2015/06/03 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang