我有一个由 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()
谢谢
我解决了这个问题。
感谢帮助我的人:
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()
是的,它有效。