import re import gradio as gr from elsefile.solve import * ##建立一个gradio,来接收输入信息。。 class set_gradio_for(): def __init__(self,tip_input,description): self.tip_input = tip_input self.description = description #### 处理输出的结果 def transfer_result(self,input_): try: matrix = get_matrix(input_) if matrix: my_eq = solving_equation() reply = my_eq.get_answer(matrix) else: reply = 'Error!! 出错了!是你输入的错误,请按照输入规则输入!!!' except: reply = 'Error!! 出错了!很可能是你输入的错误,请按照输入规则输入!!!' return reply def run_in_gradio(self): #接受的输入框 inputs = gr.Textbox(lines=4, label="Click To Input!", placeholder = self.tip_input ).style(show_copy_button=True,container=False) #显示输入的框 outputs = gr.Textbox(lines=4,label='Display Results Below', placeholder='After you submiting, there will show results.' ).style(show_copy_button=True,container=False) # 建立interface interface = gr.Interface(fn=self.transfer_result, inputs=inputs, outputs=outputs, title="Calculate--By Sparkmy(MeiYu)", description=self.description, theme=gr.themes.Default(primary_hue=gr.themes.colors.green, ) ) #interface launch interface.launch(show_error=True,share=False) ## get matrix from user's input. def get_matrix(user_input): user_input = user_input.split('\n') matrix = [[eval(j) for j in re.findall(r'[\d\-./*+]+',i)] for i in user_input] for ls in matrix: if len(ls)!=len(matrix[-1]): return None else: return matrix if __name__=='__main__': tip_input = '''Please comply with rules!!''' description = ''' Please comply with rules to input!\n Rules:\n 如果需要解方程请输入增广矩阵!\n 如解方程组: x+y=2 , x-y=0, 则输入:\n 1, 1,2\n 1,-1,0\n (每组方程数字一行,数字之间用,空格或者其他无意义的符号隔开即可) ''' my = set_gradio_for(tip_input,description) my.run_in_gradio()