PyQt5中如何让应用程序接受触摸滚动?

问题描述 投票:0回答:1

我有一个由 PyQt5 制作的应用程序,该应用程序由使用触摸屏的客户使用,没有键盘或鼠标,只有屏幕,他们触摸它来移动并执行所有操作。

我的应用程序有 QScrollArea,这个 QScrollArea 包含选项,我需要上下滚动才能看到所有选项,但我的客户在触摸屏幕并将其下拉或抬起时无法滚动(例如谷歌浏览器):

但是当我在触摸屏上执行此操作时,我的应用程序不接受:

我知道窗口上有一个滚动条,但是当您一直需要向下滚动时,您必须去特定的位置向下滚动,这并不舒服。

你有解决办法吗?

这只是一个测试代码:


from PyQt5 import QtWidgets
import sys


app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.resize(500,500)
window_layout = QtWidgets.QGridLayout()


scrollarea = QtWidgets.QScrollArea()



frame = QtWidgets.QFrame()
frame_layout = QtWidgets.QGridLayout()

button1 = QtWidgets.QPushButton()
button1.setStyleSheet("background-color:rgb(150,0,0);")
button1.setFixedSize(200,200)

button2 = QtWidgets.QPushButton()
button2.setStyleSheet("background-color:rgb(150,0,0);")
button2.setFixedSize(200,200)

button3 = QtWidgets.QPushButton()
button3.setStyleSheet("background-color:rgb(150,0,0);")
button3.setFixedSize(200,200)

button4 = QtWidgets.QPushButton()
button4.setStyleSheet("background-color:rgb(150,0,0);")
button4.setFixedSize(200,200)

frame_layout.addWidget(button1)
frame_layout.addWidget(button2)
frame_layout.addWidget(button3)
frame_layout.addWidget(button4)
frame.setLayout(frame_layout)



scrollarea.setWidget(frame)


window_layout.addWidget(scrollarea)
window.setLayout(window_layout)
window.show()
app.exec()

谢谢

python python-3.x qt pyqt pyqt5
1个回答
0
投票

我解决了这个问题。

感谢帮助我的人:

1-音乐曼特

2- Github 人

我在 QScrollArea 之后添加了这段代码:

QtWidgets.QScroller.grabGesture(scrollarea.viewport(),QtWidgets.QScroller.LeftMouseButtonGesture)

这是整个代码:


from PyQt5 import QtWidgets
import sys


app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.resize(500,500)
window_layout = QtWidgets.QGridLayout()


scrollarea = QtWidgets.QScrollArea()



frame = QtWidgets.QFrame()
frame_layout = QtWidgets.QGridLayout()

button1 = QtWidgets.QPushButton()
button1.setStyleSheet("background-color:rgb(150,0,0);")
button1.setFixedSize(200,200)

button2 = QtWidgets.QPushButton()
button2.setStyleSheet("background-color:rgb(150,0,0);")
button2.setFixedSize(200,200)

button3 = QtWidgets.QPushButton()
button3.setStyleSheet("background-color:rgb(150,0,0);")
button3.setFixedSize(200,200)

button4 = QtWidgets.QPushButton()
button4.setStyleSheet("background-color:rgb(150,0,0);")
button4.setFixedSize(200,200)

frame_layout.addWidget(button1)
frame_layout.addWidget(button2)
frame_layout.addWidget(button3)
frame_layout.addWidget(button4)
frame.setLayout(frame_layout)



scrollarea.setWidget(frame)

QtWidgets.QScroller.grabGesture(scrollarea.viewport(), QtWidgets.QScroller.LeftMouseButtonGesture)


window_layout.addWidget(scrollarea)
window.setLayout(window_layout)
window.show()
app.exec()

是的,它有效。

© www.soinside.com 2019 - 2024. All rights reserved.