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读取html中指定元素生成excle文件示例
Apr 03 Python
Python入门篇之编程习惯与特点
Oct 17 Python
python实现简单温度转换的方法
Mar 13 Python
python web框架学习笔记
May 03 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
pytorch 求网络模型参数实例
Dec 30 Python
使用pygame编写Flappy bird小游戏
Mar 14 Python
python用TensorFlow做图像识别的实现
Apr 21 Python
python中把元组转换为namedtuple方法
Dec 09 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 Python
关于python中readlines函数的参数hint的相关知识总结
Jun 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封装的数据库保存session功能类
2016/07/11 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
怎么判断js脚本加载完成
2014/02/28 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
js实现简单的倒计时
2021/01/28 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
Python实现简单多线程任务队列
2016/02/27 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
python 判断网络连通的实现方法
2018/04/22 Python
python切片及sys.argv[]用法详解
2018/05/25 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
新东网科技Java笔试题
2012/07/13 面试题
制药工程专业应届生求职信
2013/09/24 职场文书
关于期中考试的反思
2014/02/02 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
人与自然观后感
2015/06/16 职场文书
董事长秘书工作总结
2015/08/14 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers