Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Can you ever image build a gui application like play Lego blocks? kivyblocks just try to provide programmer a tool to build a application like play lego blocks
kivyblocks base on the python package 'kivy', which is a cross platform GUI package and can play on window, linux, mac OS x, android and iphone
appPublic kivycalendar kivy ... see the requirements.txt
There is a BlocksApp(inherited from App) in kivyblocks contains a all widgets can be created by Blocks, and the Blocks creates widgets according a customized json data, the data can download from application server or local filesystem. The Customized json data has it own format to descript the UI and it's interaction. please see the "Customized json data" section for further information.
pip install git+https://github.com/yumoqing/kivyblocks
Use above command to install the newest version of kivyblocks
see the simple example below:
import sys
import os
from appPublic.folderUtils import ProgramPath
from appPublic.jsonConfig import getConfig
from kivyblocks.blocksapp import BlocksApp
from kivyblocks.blocks import Blocks
class TestApp(BlocksApp):
def build(self):
b = super(TestApp, self).build()
widget_desc = {
"widgettype":"VBox",
"options":{},
"subwidgets":[
{
"widgettype":"Title1",
"options":{
"otext":"Say Hello",
"i18n":True,
"size_hint_y":None,
"height":"py::CSize(2)"
}
},
{
"widgettype":"Text",
"options":{
"i18n":True,
"otext":"Hello KivyBlocks"
}
}
]
}
blocks = Blocks()
x = blocks.widgetBuild(widget_desc)
return x
if __name__ == '__main__':
pp = ProgramPath()
workdir = pp
if len(sys.argv) > 1:
workdir = sys.argv[1]
print('ProgramPath=',pp,'workdir=',workdir)
config = getConfig(workdir,NS={'workdir':workdir,'ProgramPath':pp})
myapp = TestApp()
myapp.run()
if you running it on window, it will show the following:
inherited from kivy.app.App, for kivyblocks, it get root widget description dictionary from kivyblocks app's json configuration file, and uses Blocks to build the app's root widget.
A class to constructs all the GUI Widgets in kivyblocks from a widget description dictionary, The Blocks class is register in kivy.factory.Factory, so you can get Blocks class use following script:
from kivy.factory import Factory
Blocks = Factory.Blocks
getWidgetById(id:str, from_widget:Widget) -> Widget
getWidgetById find the widget identified by "id", the widgets can be found, cause it have a "id" attribute in the widget description dictionary.
get app
app = Factory.Blocks.getWidgetById('app')
get root widget
root = Factory.blocks.getWidgetById('root')
get Window
w = Factory.Blocks.getWidgetById('Window')
find app.root descendant widget with widget_id is 'myid'
Factory.Blocks.getWidgetById('root.myid')
find specified widget's descendant widget
from_w = Factory.Blocks.getWidgetById('root.one_id')
w = Factory.Blocks.getWidgetById('mychild', from_widget=from_w)
find a widget, widget_id is 'descendant' which has a ancester widget_id is 'myancester' and it is from_widget widget's ancester.
from_w = Factory.Blocks.getWidgetById('root.one_id')
w = Factory.Blocks.getWidgetById('-myancester.descendant', from_widget=from_w)
getWidgetById(id:str, from_widget:Widget) -> Widget
id a '.' splited string, each part must be a widget_id in the widget tree if id part is start with a '-', it mean to find widget upward, else it find widget downward
from_widget, default is None, it mean find widget from app.root
if widget found, return the found widget, else return None
x = widgetBuild(desc)
** any other attributes will be handle like a wdd, use to build a widget and the attributes key will be the attribute name of the class instance.
if success, return the widget, else return None
Build app for android please see Buildozer kivy introduct and API please see kivy
FAQs
kivy blocks is a tool to build kivy ui with json format uidesc files
We found that kivyblocks demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.