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读写文本文件及编写简单的文本编辑器
Mar 11 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
Django forms表单 select下拉框的传值实例
Jul 19 Python
详解python破解zip文件密码的方法
Jan 13 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 08 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
Jul 30 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 Python
python区块链持久化和命令行接口实现简版
May 25 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 COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
python实现在pickling的时候压缩的方法
2014/09/25 Python
Django框架下在视图中使用模版的方法
2015/07/16 Python
Python中操作符重载用法分析
2016/04/29 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
西班牙手机之家:Phone House
2018/10/18 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
Java面向对象面试题
2016/12/26 面试题
学生个人求职自荐信格式
2013/09/23 职场文书
自我评价怎么写好呢?
2013/12/05 职场文书
接受捐赠答谢词
2014/01/27 职场文书
女娲补天教学反思
2014/02/05 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
MySQL串行化隔离级别(间隙锁实现)
2022/06/16 MySQL
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python