diff --git a/README.md b/README.md index 872f5d2..e3bb96b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # lightweight_charts_python + lightweight-charts-python aims to provide a simple and pythonic way to access and implement [TradingView's Lightweight Charts](https://www.tradingview.com/lightweight-charts/). ## Installation @@ -147,16 +148,19 @@ if __name__ == '__main__': df = pd.read_csv('ohlcv.csv') - chart.layout(background_color='#090008', text_color='#FFFFFF', font_size=16, font_family='Helvetica') + chart.layout(background_color='#090008', text_color='#FFFFFF', font_size=16, + font_family='Helvetica') - chart.candle_style(up_color='#00ff55', down_color='#ed4807', border_up_color='#FFFFFF', border_down_color='#FFFFFF', + chart.candle_style(up_color='#00ff55', down_color='#ed4807', + border_up_color='#FFFFFF', border_down_color='#FFFFFF', wick_up_color='#FFFFFF', wick_down_color='#FFFFFF') chart.volume_config(up_color='#00ff55', down_color='#ed4807') chart.watermark('1D', color='rgba(180, 180, 240, 0.7)') - chart.crosshair(mode='normal', vert_color='#FFFFFF', vert_style='dotted', horz_color='#FFFFFF', horz_style='dotted') + chart.crosshair(mode='normal', vert_color='#FFFFFF', vert_style='dotted', + horz_color='#FFFFFF', horz_style='dotted') chart.legend(visible=True, font_size=14) diff --git a/lightweight_charts/__init__.py b/lightweight_charts/__init__.py index 0fbda00..66f3010 100644 --- a/lightweight_charts/__init__.py +++ b/lightweight_charts/__init__.py @@ -1,8 +1,4 @@ from .chart import Chart from .js import LWC -try: - import wx.html2 - from .widgets import WxChart -except: - pass + diff --git a/lightweight_charts/widgets.py b/lightweight_charts/widgets.py index 0dc3325..8ed3ad4 100644 --- a/lightweight_charts/widgets.py +++ b/lightweight_charts/widgets.py @@ -1,14 +1,22 @@ -from lightweight_charts.js import LWC try: import wx.html2 except ImportError: pass +try: + from PyQt5.QtWebEngineWidgets import QWebEngineView +except ImportError: + pass + +from lightweight_charts.js import LWC class WxChart(LWC): def __init__(self, parent, volume_enabled=True): super().__init__(volume_enabled) - self.webview = wx.html2.WebView.New(parent) + try: + self.webview = wx.html2.WebView.New(parent) + except NameError: + raise ModuleNotFoundError('wx.html2 was not found, and must be installed to use WxChart.') self.webview.Bind(wx.html2.EVT_WEBVIEW_LOADED, self._on_js_load) self.webview.SetPage(self._html, '') @@ -17,7 +25,7 @@ class WxChart(LWC): def run_script(self, script): self.webview.RunScript(script) - def _on_js_load(self, e: wx.html2.WebViewEvent): + def _on_js_load(self, e): if not self.second_load: self.second_load = True return @@ -25,4 +33,26 @@ class WxChart(LWC): for func, args, kwargs in self.js_queue: getattr(super(), func)(*args, **kwargs) - def get_webview(self): return self.webview \ No newline at end of file + def get_webview(self): return self.webview + + +class QtChart(LWC): + def __init__(self, widget=None, volume_enabled=True): + super().__init__(volume_enabled) + try: + self.webview = QWebEngineView(widget) + except NameError: + raise ModuleNotFoundError('QWebEngineView was not found, and must be installed to use QtChart.') + + self.webview.loadFinished.connect(self._on_js_load) + self.webview.page().setHtml(self._html) + + def run_script(self, script): self.webview.page().runJavaScript(script) + + def _on_js_load(self): + self.loaded = True + for func, args, kwargs in self.js_queue: + getattr(super(), func)(*args, **kwargs) + + def get_webview(self): return self.webview + diff --git a/setup.py b/setup.py index f8373bb..1fa98df 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ with open('README.md', 'r', encoding='utf-8') as f: setup( name='lightweight_charts', - version='1.0.1', + version='1.0.3', packages=find_packages(), python_requires='>=3.9', install_requires=[ @@ -16,5 +16,6 @@ setup( license='MIT', description="Python framework for TradingView's Lightweight Charts JavaScript library.", long_description=long_description, + long_description_content_type='text/markdown', url='https://github.com/louisnw01/lightweight-charts-python', )