私は...それは、マウスの動きに追従し、時には位置0, 0
に戻り、ウィジェットフォローマウスの動きを作るイベントフィルタとPyQtのアプリを作っているPyQtは:ウィジェットは常に位置に移動する(0、0)
import sys
from PyQt4 import QtGui, QtCore
import resources
class Window(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
widget = QtGui.QWidget(self) # Central Widget
self.edit = QtGui.QLineEdit(self) # Field that show's mouse position
self.somewidget = QtGui.QPushButton(self) # Widget that will follow mouse movement
self.setCentralWidget(widget)
self.edit.move(0, 0)
self.somewidget.show()
self.timer = QtCore.QTimer(self) # Timer that will be used to set a little interval for mouse movement, to make it smoother.
self.timer.timeout.connect(self.movefunc)
def eventFilter(self, source, event): # Defining event type to follow mouse movement without button.
if event.type() == QtCore.QEvent.MouseMove:
if event.buttons() == QtCore.Qt.NoButton:
self.pos = event.pos() # Define full position.
self.edit.setText('x: %d, y: %d' % (self.pos.x(), self.pos.y())) # show's mouse x and y position in field.
self.timer.start(5) # starts timer for 5 milliseconds.
else:
pass
return QtGui.QMainWindow.eventFilter(self, source, event)
def movefunc(self):
self.somewidget.move(self.pos.x(), self.pos.y()) # moves widget to mouse position in every 5 milliseconds.
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
win = Window()
win.show()
app.installEventFilter(win)
sys.exit(app.exec_())
ウィジェットは5ミリ秒ごとに移動するので、よりスムーズになることがありますが、時々(1〜2秒ごとに)位置0, 0
に戻ります。どのように私はそれを滑らかにして、特定の位置に制限することができますか?
あなたは何をしようとしていますか?マウスが動いたときにボタンが動くのはなぜですか? –