如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#!/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支持鼠标拖动的操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/SongAla/article/details/78732040