def mouseReleaseEvent(self, event): if event.button() == Qt.LeftButton: if self.panActive: self.panActive = False if not ENABLE_KINETIC_PANNING or self.lastMoveTime.msecsTo(QTime.currentTime()) > HOLD_TIME_THRESHOLD: return self.kineticPanSpeed = QPointF() entriesConsidered = 0 currentTime = QTime.currentTime() for entry in self.mouseHistory: if not entry.time: continue if entry.time.msecsTo(currentTime) < HOLD_TIME_THRESHOLD: self.kineticPanSpeed += entry.position entriesConsidered += 1 if entriesConsidered > 0: self.kineticPanSpeed /= entriesConsidered self.lastMoveTime = currentTime self.kineticTimer.start() self.panDecellerate = True event.accept()
def TurnGenerator(self, startPosition): """ Takes PointerPosition on explicit call to send(). Generates turn positions between lines that lie on a axis (vertical or horizontal). Qt doesn't have event.time . Fabricate it here. X11 has event.time. """ position = None # if events are: send(None), close(), need this defined previousPosition = startPosition positionClock = QTime.currentTime() # note restart returns elapsed positionClock.restart() # I also tried countPositionsSinceTurn to solve lag for cusp-like # print "init turn" try: while True: position = (yield) positionElapsedTime = positionClock.restart() turn = self.detectTurn(previousPosition, position) if turn is not None: self.lineGenerator.send((turn, positionElapsedTime)) previousPosition = position # Roll forward else: # path is still on an axis: wait pass finally: # assert position is defined if previousPosition != position: """ Have position not sent. Fabricate a turn (equal to position) and send() """ self.lineGenerator.send((position, 0)) print "Closing turn generator"
def editNewTodo(self): """Sets the current todo to a newly created todo""" newTodo = QOrganizerTodo() newTodo.setPriority(QOrganizerItemPriority.HighPriority) newTodo.setStatus(QOrganizerTodoProgress.StatusNotStarted) currentDateTime = QDateTime(QDate.currentDate(), QTime.currentTime()) newTodo.setStartDateTime(currentDateTime) newTodo.setDueDateTime(currentDateTime.addSecs(60*60)) self._todo = newTodo self._todo.isNewTodo = True self.currentTodoChanged.emit()
def kineticTimerEvent(self): currentTime = QTime.currentTime() deltaTime = self.lastMoveTime.msecsTo(currentTime) self.lastMoveTime = currentTime if self.panDecellerate: self.kineticPanSpeed *= pow(0.5, float(deltaTime / KINETIC_PANNING_HALFLIFE)) scaledSpeed = self.kineticPanSpeed * deltaTime if self.kineticPanSpeed.manhattanLength() < KINETIC_PAN_SPEED_THRESHOLD: self.kineticTimer.stop() return self.panFloatWrapper(scaledSpeed)
def mousePressEvent(self, event): self.setFocus() if event.button() == Qt.LeftButton: if event.modifiers() & Qt.ControlModifier: pass else: if self.coordQueryState: self.coordQueryResult.emit(self.screenPositionToCoordinate(event.lastPos())) return self.panActive = True self.kineticTimer.stop() self.kineticPanSpeed = QPointF() self.lastMoveTime = QTime.currentTime() event.accept()
def kineticTimerEvent(self): currentTime = QTime.currentTime() deltaTime = self.lastMoveTime.msecsTo(currentTime) self.lastMoveTime = currentTime if self.panDecellerate: self.kineticPanSpeed *= pow( 0.5, float(deltaTime / KINETIC_PANNING_HALFLIFE)) scaledSpeed = self.kineticPanSpeed * deltaTime if self.kineticPanSpeed.manhattanLength( ) < KINETIC_PAN_SPEED_THRESHOLD: self.kineticTimer.stop() return self.panFloatWrapper(scaledSpeed)
def mouseMoveEvent(self, event): if event.modifiers() & Qt.ControlModifier: if self.lastCircle: self.lastCircle.setCenter(self.screenPositionToCoordinate(event.pos())) elif self.panActive: currentTime = QTime.currentTime() deltaTime = self.lastMoveTime.msecsTo(currentTime) delta = event.lastPos() - event.pos() if deltaTime > 0: self.kineticPanSpeed = delta / deltaTime self.mouseHistory.popleft() self.mouseHistory.append(MouseHistoryEntry(self.kineticPanSpeed, currentTime)) self.panFloatWrapper(delta) event.accept()
def testInsert(self): myHash = {} qdate = QDate.currentDate() qdatetime = QDateTime.currentDateTime() qtime = QTime.currentTime() qurl = QUrl("http://www.pyside.org") qpoint = QPoint(12, 42) myHash[qdate] = "QDate" myHash[qdatetime] = "QDateTime" myHash[qtime] = "QTime" myHash[qurl] = "QUrl" myHash[qpoint] = "QPoint" self.assertEqual(myHash[qdate], "QDate") self.assertEqual(myHash[qdatetime], "QDateTime") self.assertEqual(myHash[qtime], "QTime") self.assertEqual(myHash[qurl], "QUrl") self.assertEqual(myHash[qpoint], "QPoint")
def testInsert(self): myHash = {} qdate = QDate.currentDate() qdatetime = QDateTime.currentDateTime() qtime = QTime.currentTime() qurl = QUrl("http://www.pyside.org") qpoint = QPoint(12, 42) myHash[qdate] = "QDate" myHash[qdatetime] = "QDateTime" myHash[qtime] = "QTime" myHash[qurl] = "QUrl" myHash[qpoint] = "QPoint" self.assertEqual(myHash[qdate], "QDate") self.assertEqual(myHash[qdatetime], "QDateTime") self.assertEqual(myHash[qtime], "QTime") self.assertEqual(myHash[qurl], "QUrl") self.assertEqual(myHash[qpoint], "QPoint")
def updateClock(self): self.setText(QTime.currentTime().toString("hh:mm"))
def updateClock(self): self.setText(QTime.currentTime().toString("hh:mm"))
from PySide.QtCore import QTime, QTimer, Qt from PySide.QtGui import QApplication, QLabel import sys import time def quitApplication(app): return app.quit if __name__ == '__main__': app = QApplication(sys.argv) due = QTime.currentTime() message = "Alert! " try: if len(sys.argv) < 2: raise ValueError("Not enough arguments") hours, minutes = sys.argv[1].split(":") #python SimpleApp.py 09:32 <optional message> due = QTime(int(hours), int(minutes)) if not due.isValid(): raise ValueError("Input time is not Valid") if len(sys.argv) > 2: message += " ".join(sys.argv[2:])
# Only Example: import, it's not recommended but for the simple app it's okay from PySide.QtCore import QTime, QTimer, Qt from PySide.QtGui import QApplication, QLabel import sys import time app = QApplication(sys.argv) # Hold the current time for the alarm clock due = QTime.currentTime() # Static message for Alert box message = 'Alert!' try: message = 'Alert!' # The application requires always an argument if len(sys.argv) < 2: sys.argv.append('%02d:%02d' % (due.hour(), due.minute())) elif len(sys.argv) > 2: message = ' '.join(sys.argv[2:]) # class PySide.QtCore.QTime(h, m[, s=0[, ms=0]]) hours, minutes = sys.argv[1].split(':') due = QTime(int(hours), int(minutes))