Python LCDd client (LCDproc server client)
A python library for interfacing with LCDd
, the server
component of the commonly known LCDproc
Features:
Object-oriented interface support for all nativeLCDd
widgets
Decoupled thread to service LCDd
screen switching responses
pip install pylcddc
TODO.md
for more information and TODOsLCDd
packaged with LCDproc
version 0.5.9
0.3
pylcddc.client
: client for LCDdpylcddc.screen
: screens to attach to clientspylcddc.widgets
: widgets to place in screenspylcddc.exceptions
: exceptions raised by the librarypylcddc.responses
: LCDd response decoder and abstractionspylcddc.commands
: LCDd request generationDon’t really use these for production code…
See more examples in /demo
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()
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()
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
See LICENSE.txt
for more details