Gempyre is a framework for quick and simple UI development
Project description
Gempyre-Python
The easy and productive UI library for Python.
Gempyre
Gempyre is a C++ GUI library, see https://github.com/mmertama/Gempyre.git.
install from PyPi
pip install Gempyre
Build from sources
Create a venv (https://docs.python.org/3/library/venv.html)
pip install .
Notes:
Raspberry OS
Todo: Needs optional RASPEBERRY flag to be passed to CMake.
Missing libraries
You may need python3-dev and python3-pip be installed. This may depend on your evironment, In linux e.g. apt-get install python3-dev, in MacOS look brew.
Windows:
# Windows has a limit of path lengths to 260 chars - 8-+
#
# "260 characters is enough for everybody"
# - W.G III
That may cause troubles (especially with python -m build).
Run
After install, you just run the script!
$ python3 test/telex_test.py
API
See examples how to use e.g. telex_test
The programming interface is very same as in Gempyre
- except I changed function and method name naming from CamelCase to more pythonic snake_case (Im not sure if that was a right choice).
Please look Gempyre for documentation.
Please note that Gempyre Core and Gempyre Graphics are part of Python API, but not Gempyre-Utils, it has C++ utilites and thus not applicable for Python programmers as everything and more is already there!
Examples
See small test apps
Minimum single file app
#!/usr/bin/python3
import Gempyre
import os
import sys
from Gempyre import resource
html = '''
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
</head>
<body>
<script src="/gempyre.js"></script>
Hello!
</body>
</html>
'''
if __name__ == "__main__":
map, names = resource.from_bytes({"ui.html": bytes(html, 'utf-8')})
ui = Gempyre.Ui(map, names["ui.html"])
ui.run()
Minimum application with an external UI file
import Gempyre
import os
import sys
from Gempyre import resource
name = os.path.join(os.path.dirname(sys.argv[0]), "hello.html")
map, names = resource.from_file(name)
ui = Gempyre.Ui(map, names[name])
ui.run()
HTML
Assumed to be found in the same folder as the script
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script src="/gempyre.js"></script>
Hello!
</body>
</html>
Application with interaction
Python
def main():
name = os.path.join(os.path.dirname(sys.argv[0]), "example2.html")
map, names = resource.from_file(name)
ui = Gempyre.Ui(map, names[name])
output = Gempyre.Element(ui, "output")
open_button = Gempyre.Element(ui, "open")
open_button.subscribe("click", lambda _: output.set_html("Hello"))
ui.run()
if __name__ == "__main__":
main()
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<script src="/gempyre.js"></script>
<button id="open">Open</button>
<pre id="output"></pre>
</body>
</html>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for Gempyre-1.2.7-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9d3ad638299782b21d42b0274a2b2465763d572edfdf6be17a76cfff92d204e |
|
MD5 | fb64ceadcb3eeadd4ecc2e9c0bd8f9cd |
|
BLAKE2b-256 | 6243a246327476d8899b4bbddfb0d6a22d451ddfa4f14b635022e78458afede5 |
Hashes for Gempyre-1.2.7-cp38-cp38-macosx_12_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5466a09247456c078b0fb61acba2fa0f77ba5038c5d7eb5aa8b0d35bab017d3 |
|
MD5 | bd1c5742e75b946b7d7bf51ce5ecca01 |
|
BLAKE2b-256 | e1df725bb4f1f8a09f12e2956361612d4735e37ab051d42a13665ed13dcc59c9 |