FrontPage
»
LowLevelLibrary
»
LowLevelHelloWorld
Let me repeat it again, I can't stress this enough: YOU DON'T WANT TO WRITE APPS USING THE LOW LEVEL LIBRARY. This example code is here just to document usage of the functions, and in case you want to study the protocol.
That said, this code is already more robust than the equivalent C code, as responses.next() will raise exceptions for any errors reported by the server. As the example doesn't handle them, any exception will interrupt the whole program and exit with a suitable (if ugly) error message.
This example is included with the library, in sample/hell_low_level_library.py (or online - guaranteed up-to-date).
Here is the code:
# low-level library version of Hello, World from PicoGUI import network, requests, responses, events def test(where='localhost'): connection = network.sock(where) connection.send(requests.mkstring('Greetings')) string_id = responses.next(connection) connection.send(requests.register(string_id)) top_id = responses.next(connection) # PG_WIDGET_LABEL is 1 connection.send(requests.createwidget(1)) label_id = responses.next(connection) connection.send(requests.mkstring('Hello, World')) string_id = responses.next(connection) # PG_WP_TEXT is 7 connection.send(requests.set(label_id, 7, string_id)) responses.next(connection) # PG_WP_SIDE is 2, PG_S_ALL is 2048 (1<<11) connection.send(requests.set(label_id, 2, 2048)) responses.next(connection) # PG_FSTYLE_BOLD is 256 (1<<8) connection.send(requests.mkfont('', 256, 24)) font_id = responses.next(connection) # PG_WP_FONT is 8 connection.send(requests.set(label_id, 8, font_id)) responses.next(connection) # PG_DERIVE_INSIDE is 2 connection.send(requests.attachwidget(top_id, label_id, 2)) responses.next(connection) connection.send(requests.update()) responses.next(connection) return connection def event_loop(connection): while 1: connection.send(requests.wait()) ev = responses.next(connection) if isinstance(ev, events.Event) and ev.name == 'close': return if __name__ == '__main__': from sys import argv if len(argv) > 2: port = argv[2] else: port = 0 if len(argv) > 1: where = argv[1] else: where = 'localhost' c = test() event_loop(c)