# dashing **Repository Path**: zxy1992/dashing ## Basic Information - **Project Name**: dashing - **Description**: fork from github - **Primary Language**: Unknown - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-06-18 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README image:https://img.shields.io/badge/status-alpha-orange.svg[badge] image:https://img.shields.io/badge/version-0.1.0-orange.svg[badge] image:https://img.shields.io/pypi/v/dashing.svg?style=plastic["Latest Version", link="https://pypi.python.org/pypi/dashing"] image:https://img.shields.io/badge/License-LGPL%20v3-blue.svg[License] Dashing is a library to quickly create terminal-based dashboards in Python. image:https://raw.githubusercontent.com/FedericoCeratto/dashing/gh-pages/tty.gif[Example] Similar libraries for other languages: https://github.com/gizak/termui[termui] https://github.com/chjj/blessed[blessed] https://github.com/yaronn/blessed-contrib[blessed-contrib] === Dependencies The link:https://pypi.python.org/pypi/blessed[blessed] library. === Installation Use packages from your Linux distribution, or: [source,bash] ---- pip install dashing ---- === Quick mode If you want to provide a simple UI to a script, Dashing can generate a layout automatically. [source,python] ---- import time from dashing import QuickDash def main(): d = QuickDash() d.status = "Running..." d.logs.append("Started") for progress in range(100): d.gauges['progess'] = progress if progress % 10 == 0: d.logs.append("Started") time.sleep(0.05) d.status = "Done!" time.sleep(1) ---- === Normal mode In normal mode you have full control over the UI .Usage [source,python] ---- from time import sleep, time import math from dashing import * if __name__ == '__main__': ui = HSplit( VSplit( HGauge(val=50, title="only title", border_color=5), HGauge(label="only label", val=20, border_color=5), HGauge(label="only label", val=30, border_color=5), HGauge(label="only label", val=50, border_color=5), HGauge(label="only label", val=80, border_color=5), HGauge(val=20), HGauge(label="label, no border", val=55), HSplit( VGauge(val=0, border_color=2), VGauge(val=5, border_color=2), VGauge(val=30, border_color=2), VGauge(val=50, border_color=2), VGauge(val=80, border_color=2, color=4), VGauge(val=95, border_color=2, color=3), ColorRangeVGauge( val=100, border_color=2, colormap=( (33, 2), (66, 3), (100, 1), ) ), ) ), VSplit( Text('Hello World,\nthis is dashing.', border_color=2), Log(title='logs', border_color=5), VChart(border_color=2, color=2), HChart(border_color=2, color=2), HBrailleChart(border_color=2, color=2), # HBrailleFilledChart(border_color=2, color=2), ), title='Dashing', ) log = ui.items[1].items[1] vchart = ui.items[1].items[2] hchart = ui.items[1].items[3] bchart = ui.items[1].items[4] # bfchart = ui.items[1].items[5] log.append("0 -----") log.append("1 Hello") log.append("2 -----") prev_time = time() for cycle in range(0, 200): ui.items[0].items[0].value = int(50 + 49.9 * math.sin(cycle / 80.0)) ui.items[0].items[1].value = int(50 + 45 * math.sin(cycle / 20.0)) ui.items[0].items[2].value = int(50 + 45 * math.sin(cycle / 30.0 + 3)) vgauges = ui.items[0].items[-1].items for gaugenum, vg in enumerate(vgauges): vg.value = 50 + 49.9 * math.sin(cycle / 12.0 + gaugenum) t = int(time()) if t != prev_time: log.append("%s" % t) prev_time = t vchart.append(50 + 50 * math.sin(cycle / 16.0)) hchart.append(99.9 * abs(math.sin(cycle / 26.0))) bchart.append(50 + 50 * math.sin(cycle / 6.0)) # bfchart.append(50 + 50 * math.sin(cycle / 16.0)) ui.display() sleep(1.0/25) ----