from typing import Final import gradio as gr # type: ignore import src.func as func from src.model.choice import ChoiceWithBetTable DEFAULT_AMOUNT: Final[int] = 10_000 def clear(text: str) -> str: try: return func.clear(text) except Exception as e: raise gr.Error(e) def calculate(budget: int, text: str) -> tuple[str, ChoiceWithBetTable]: try: return func.calculate(budget, text) except Exception as e: raise gr.Error(e) with gr.Blocks( theme=gr.themes.Default(primary_hue="green", secondary_hue="lime") ) as demo: # flontend ------------------------------ with gr.Row(): with gr.Column(): budget_input = gr.Number(value=DEFAULT_AMOUNT, label="予算") text_input = gr.Textbox(label="netkeiba 買い目コピペ") with gr.Row(): calculate_button = gr.Button(value="Calculate", variant="primary") clear_button = gr.Button(value="Clear") with gr.Column(): markdown_output = gr.Markdown() df_output = gr.Dataframe( value=[], label=None, headers=["買い目", "オッズ", "賭け額", "払戻"], datatype=["str", "number", "number", "number"], col_count=(4, "fixed"), ) # リンク gr.Markdown( "[即パット](https://www.ipat.jra.go.jp/)
[netkeiba](https://www.netkeiba.com/)
" ) # click ------------------------------ calculate_button.click( calculate, inputs=[budget_input, text_input], outputs=[markdown_output, df_output], ) clear_button.click( clear, inputs=[text_input], outputs=[text_input], ) if "__main__" == __name__: demo.launch(debug=True)