shenghaoyang / pylcddc

Python LCDd client (LCDproc server client)
MIT License
9 stars 4 forks source link
lcdd lcdproc mit-license

pylcddc

A python library for interfacing with LCDd, the server component of the commonly known LCDproc

Features:

Installation

pip install pylcddc

More TODOs

Version support

Modules for users

Modules for developers

Examples

Don't really use these for production code...

See more examples in /demo

Simple usage for static display

import pylcddc.client as client
import pylcddc.widgets as widgets
import pylcddc.screen as screen

title = widgets.Title('title_widget',
                      'Hello, World!')
main_scr = screen.Screen('main', [title])

c = client.Client('localhost', 13666)
c.add_screen(main_scr)
input('Press any key to exit')
c.close()

Nest widgets in frames

import pylcddc.client as client
import pylcddc.widgets as widgets
import pylcddc.screen as screen
import platform

flavorful_text_widgets = [widgets.String(f'flv_tx{i}', 1, 1 + i, text) for 
                          i, text in enumerate(
        'now you see me\nnow you dont\nso scary\nsuch wow'.splitlines())]
frame_top = widgets.Frame('frame_top', flavorful_text_widgets, 
                          1, 1, 10, 1, 10, 4, 
                          widgets.Frame.Direction.VERTICAL, 8)
platform_text = widgets.Scroller('platform', 1, 2, 20, 1,
                                 widgets.Scroller.Direction.HORIZONTAL, 1,
                                 'pylcddc running on ' 
                                 + ' '.join(platform.uname()))

main_scr = screen.Screen('main', [frame_top, platform_text])

c = client.Client('localhost', 13666)
c.add_screen(main_scr)
input('Press any key to exit')
c.close()

Simple timed display updates and display attributes

import pylcddc.client as client
import pylcddc.widgets as widgets
import pylcddc.screen as screen
import pylcddc.exceptions as lcdexcept
import time

time_string = widgets.Scroller('time', 1, 1, 20, 2,
                               widgets.Scroller.Direction.HORIZONTAL, 8,
                               time.ctime())
main_scr = screen.Screen('main', [time_string],
                         heartbeat=screen.ScreenAttributeValues.Heartbeat.OFF)

c = client.Client('localhost', 13666)
c.add_screen(main_scr)

print('pylcdd time demo\nUse ^C to exit')

try:
    while True:
        time_string.text = time.ctime()
        c.update_screens([main_scr])
        print('updated time to: ', time.ctime())
        time.sleep(0.1)
except lcdexcept.RequestError as e:
        print('LCDd refused our request', e)
except lcdexcept.FatalError as e:
        print('pylcddc fatal internal error', e)
except KeyboardInterrupt:
        print('exitting')

c.close()  # there might be exceptions from OS system call failures here

Licensing

See LICENSE.txt for more details