PyQt5实现让QScrollArea支持鼠标拖动的操作方法

 更新时间:2019年06月19日 09:03:51   作者:StatFs  
今天小编就为大家分享一篇PyQt5实现让QScrollArea支持鼠标拖动的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如下所示:

#!/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支持鼠标拖动的操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用PyInstaller将Python代码打包成独立可执行文件详细步骤

    使用PyInstaller将Python代码打包成独立可执行文件详细步骤

    PyInstaller是一个Python库,可以将Python应用程序转换为独立的可执行文件,这篇文章主要给大家介绍了关于使用PyInstaller将Python代码打包成独立可执行文件的详细步骤,需要的朋友可以参考下
    2024-07-07
  • 分享5个短小精悍的Python趣味脚本,适合小白上手!

    分享5个短小精悍的Python趣味脚本,适合小白上手!

    这篇文章主要给大家分享介绍了5个短小精悍的Python趣味脚本,非常适合小白上手,分别包含图片尺寸缩小、pdf转txt文档、猜数字游戏、电池电量告警以及图片添加水印等脚本,需要的朋友可以参考下
    2022-02-02
  • Python中xrange与yield的用法实例分析

    Python中xrange与yield的用法实例分析

    这篇文章主要介绍了Python中xrange与yield的用法,结合实例形式较为详细的分析了range和xrange功能、使用方法与相关注意事项,需要的朋友可以参考下
    2017-12-12
  • 如何在Python中用好短路机制

    如何在Python中用好短路机制

    这篇文章主要介绍了如何在Python中用好短路机制,Python中的短路机制非常有用,跟很多其他编程语言中的短路机制作用类似,接下来让我们通过几个简单的例子总结Python中可用的几种短路机制,需要的朋友可以参考下
    2022-02-02
  • Python三十行代码实现简单人脸识别的示例代码

    Python三十行代码实现简单人脸识别的示例代码

    这篇文章主要介绍了Python三十行代码实现简单人脸识别的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 利用Python制作简易的点赞器

    利用Python制作简易的点赞器

    在今天,任何一个社区类平台,都具备点赞功能,应运而生的就是自动点赞器,俗称刷分机/刷赞器。本文将用Python编写一个点赞机器人,需要的可以参考一下
    2022-06-06
  • Python使用cx_Freeze库生成msi格式安装文件的方法

    Python使用cx_Freeze库生成msi格式安装文件的方法

    这篇文章主要介绍了Python使用cx_Freeze库生成msi格式安装文件的方法,结合实例形式分析了Python基于cx_Freeze库生成msi格式安装文件操作技巧与相关问题解决方法,需要的朋友可以参考下
    2018-07-07
  • Python定时任务sched模块用法示例

    Python定时任务sched模块用法示例

    这篇文章主要介绍了Python定时任务sched模块用法,结合实例形式分析了定时任务sched模块的基本功能、参数含义、多线程定时任务等相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • Python 中将秒转换为小时、分钟和秒的示例代码

    Python 中将秒转换为小时、分钟和秒的示例代码

    这篇文章主要介绍了在 Python 中将秒转换为小时、分钟和秒,本篇文章将讨论使用 Python 中的四种不同方法来使用、管理秒并将其转换为天、小时、分钟和秒,需要的朋友可以参考下
    2023-05-05
  • Python中Unittest框架的具体使用

    Python中Unittest框架的具体使用

    这篇文章主要介绍了Python中Unittest框架的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08

最新评论