【发布时间】:2013-11-21 14:43:11
【问题描述】:
我实现了一个图像浏览器,在其中我使用鼠标的滚轮事件来显示下一张图像。问题是,如果用户滚动得太快,滚轮的位置值会跳过并吞下两者之间的值。有人知道我该如何克服这个问题吗?如果我慢慢滚动,我会得到一个减小的值(-1,-2,-3);如果我快速滚动,我会得到类似(-1,-5,-6,-11)的东西。该问题出现在 WindowsXP 和 7 上。
这是一个示例代码。
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
#############Define MyWindow Class Here ############
class MyWindow(QMainWindow):
##-----------------------------------------
def __init__(self):
QMainWindow.__init__(self)
self.label = QLabel("No data")
self.label.setGeometry(100, 200, 100, 100)
self.setCentralWidget(self.label)
self.setWindowTitle("QMainWindow WheelEvent")
self.x = 0
##-----------------------------------------
def wheelEvent(self,event):
self.x =self.x + event.delta()/120
print self.x
self.label.setText("Total Steps: "+QString.number(self.x))
##-----------------------------------------
##########End of Class Definition ##################
def main():
app = QApplication(sys.argv)
window = MyWindow()
window.show()
return app.exec_()
if __name__ == '__main__':
main()
【问题讨论】:
-
你用的是什么鼠标?车轮是“咔哒”还是“光滑”?
event.delta()的值是否保持不变?我的鼠标滚轮是“clicky”,增量是恒定的 ±120 个单位。 -
我的有点平滑,值不会保持不变。如果我快速滚动,它会以 120 步的速度运行,例如120,120,240,360。
标签: python windows events pyqt mousewheel