Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Error using Widget with WxChart #320

Closed
JuanGabrielAM opened this issue Mar 14, 2024 · 1 comment
Closed

[BUG] Error using Widget with WxChart #320

JuanGabrielAM opened this issue Mar 14, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@JuanGabrielAM
Copy link

Expected Behavior

When you open the graph, it loads the position of the lines created with the toolbox and when you close the program it should save the coordinates of the lines in the drawings.json file.

Current Behaviour

When moving a created line, the following error appears in the terminal (I am using vcode):

Tracking (most recent recent calls):
File "C:\Users\Home\AppData\Local\Programs\Python\Python312\Lib\site-packages\lightweight_charts\widgets.py", line 64, in
self.webview.Bind(wx.html2.EVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, lambda e: emit_callback(self, e.GetString()))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Home\AppData\Local\Programs\Python\Python312\Lib\site-packages\lightweight_charts\widgets.py", line 50, in emit_callback
func, args = parse_event_message(window, string)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Home\AppData\Local\Programs\Python\Python312\Lib\site-packages\lightweight_charts\util.py", line 33, in parse_event_message
func = window.handlers[name]
^^^^^^^^^^^^^^^
AttributeError: Object 'WxChart' does not have attribute 'controllers'

Reproducible Example

import pandas as pd
from lightweight_charts import Chart
import re
import json

def calculate_sma(df, period: int = 50):
    return pd.DataFrame({
        'time': df['date'],
        f'SMA {period}': df['close'].rolling(window=period).mean()
    }).dropna()

def get_bar_data(symbol, timeframe):
    #print(f'Archivo: {symbol}_{timeframe}.csv')
    if symbol not in ('AAPL', 'GOOGL', 'TSLA'):
        print(f'No data for "{symbol}"')
        return pd.DataFrame()
    return pd.read_csv(f'bar_data/{symbol}_{timeframe}.csv')


def on_search(chart, searched_string):
    new_data = get_bar_data(searched_string, chart.topbar['timeframe'].value)
    if new_data.empty:
        return
    chart.topbar['symbol'].set(searched_string)
    chart.set(new_data)
    
    # Load the drawings saved under the symbol.
    chart.toolbox.load_drawings(searched_string)


def on_timeframe_selection(chart):
    new_data = get_bar_data(chart.topbar['symbol'].value, chart.topbar['timeframe'].value)
    if new_data.empty:
        return
    # The symbol has not changed, so we want to re-render the drawings.
    chart.set(new_data, render_drawings=True)  

if __name__ == '__main__':

    chart = Chart(toolbox=True)
    chart.legend(True)

    chart.events.search += on_search
    chart.topbar.textbox('symbol', 'TSLA')
    chart.topbar.switcher(
        'timeframe',
        ('1min', '5min', '30min'),
        default='1min',
        func=on_timeframe_selection
    )

    df = get_bar_data('TSLA', '1min')
    
    chart.set(df)

    line = chart.create_line('SMA 20')
    sma_data = calculate_sma(df, period=20)
    line.set(sma_data)

    line = chart.create_line('SMA 40','rgba(255,0,0,1)')
    sma_data = calculate_sma(df, period=40)
    line.set(sma_data)

    # Imports the drawings saved in the JSON file.
    chart.toolbox.import_drawings('drawings.json')
    
    # Loads the drawings under the default symbol.
    chart.toolbox.load_drawings(chart.topbar['symbol'].value)  
    
    # Saves drawings based on the symbol.
    chart.toolbox.save_drawings_under(chart.topbar['symbol'])  

    chart.show(block=True)
    
    # Exports the drawings to the JSON file upon close.
    chart.toolbox.export_drawings('drawings.json')

Environment

- OS: Windows 11
- Library: 1.0.20
@JuanGabrielAM JuanGabrielAM added the bug Something isn't working label Mar 14, 2024
@louisnw01
Copy link
Owner

Please provide a minimal reproducible example.

@louisnw01 louisnw01 closed this as not planned Won't fix, can't repro, duplicate, stale May 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants