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新手编程过程中如何规避一些常见问题的建议
Apr 01 Python
python使用PyGame绘制图像并保存为图片文件的方法
Apr 24 Python
python学习数据结构实例代码
May 11 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
Python操作MySQL模拟银行转账
Mar 12 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
Django使用中间件解决前后端同源策略问题
Sep 02 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 Python
Python基于xlutils修改表格内容过程解析
Jul 28 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原理之变量(Variables inside PHP)
2013/08/09 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
人力资源部经理助理岗位职责
2014/03/04 职场文书
学生会部长竞聘书
2014/03/31 职场文书
个性婚礼策划方案
2014/05/17 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
辩论赛新闻稿
2015/07/17 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书