Source code for qtpyvcp.plugins.clock

"""
DateTime
--------

This plugin provides the Date and Time

This plugin is not loaded by default, so to use it you will first
need to add it to your VCPs YAML config file.

YAML configuration:

.. code-block:: yaml

    data_plugins:
      clock:
        provider: qtpyvcp.plugins.clock:Clock

"""

from datetime import datetime

from qtpy.QtCore import QTimer
from qtpyvcp.plugins import DataPlugin, DataChannel


[docs]class Clock(DataPlugin): """Clock Plugin""" def __init__(self): super(Clock, self).__init__() # set initial values self.time.setValue(datetime.now()) self.date.setValue(datetime.now()) # make the clock tick self.timer = QTimer() self.timer.timeout.connect(self.tick) @DataChannel def time(self, chan): """The current time, updated every second. Args: format (str) : Format spec. Defaults to ``%I:%M:%S %p``. See http://strftime.org for supported formats. Returns: The current time as a formatted string. Default HH:MM:SS AM Channel syntax:: clock:time clock:time?string clock:time?string&format=%S """ return chan.value @time.tostring def time(self, chan, format="%I:%M:%S %p"): return chan.value.strftime(format) @DataChannel def date(self, chan): """The current date, updated every second. Args: format (str) : Format spec. Defaults to ``%m/%d/%Y``. See http://strftime.org for supported formats. Returns: The current date as a formatted string. Default MM/DD/YYYY Channel syntax:: clock:date clock:date?string clock:date?string&format=%Y """ return chan.value @date.tostring def date(self, chan, format="%m/%d/%Y"): return chan.value.strftime(format)
[docs] def initialise(self): self.timer.start(1000)
def tick(self): self.time.setValue(datetime.now()) self.date.setValue(datetime.now())
if __name__ == "__main__": from qtpy.QtWidgets import QApplication app = QApplication([]) c = Clock() c.initialise() def onTimeChanged(val): print((c.time)) print((c.date)) c.time.notify(onTimeChanged) app.exec_()