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实现比较两个列表(list)范围
Jun 12 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
Django实战之用户认证(初始配置)
Jul 16 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
Mac 使用python3的matplot画图不显示的解决
Nov 23 Python
Python smtp邮件发送模块用法教程
Jun 15 Python
Pycharm github配置实现过程图解
Oct 13 Python
python爬虫泛滥的解决方法详解
Nov 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
收音机的保养
2021/03/01 无线电
php中用文本文件做数据库的实现方法
2008/03/27 PHP
php中数组首字符过滤功能代码
2012/07/31 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
javascript数组使用调用方法汇总
2007/12/08 Javascript
JavaScript的Cookies
2008/01/16 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
2014年廉洁自律承诺书
2014/05/26 职场文书
推广活动策划方案
2014/08/23 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
领导参观欢迎词
2015/01/26 职场文书
中英文求职信范文
2015/03/19 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
Python如何将list中的string转换为int
2022/07/15 Ruby