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读写Excel文件的实例
Nov 01 Python
python常规方法实现数组的全排列
Mar 17 Python
Python从函数参数类型引出元组实例分析
May 28 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
Python搭建代理IP池实现检测IP的方法
Oct 27 Python
python argparser的具体使用
Nov 10 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
解决python运行效率不高的问题
Jul 20 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 Python
pytest进阶教程之fixture函数详解
Mar 29 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
php实现mysql同步的实现方法
2009/10/21 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
详解如何设置Python环境变量?
2019/05/13 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
Pytorch之Variable的用法
2019/12/31 Python
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
运动会广播稿60字
2014/01/15 职场文书
优秀医生事迹材料
2014/02/12 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
2014年工商所工作总结
2014/12/09 职场文书
自我工作评价范文
2015/03/06 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python