Exemplo n.º 1
0
 def set_eq_to_obj(self, eq_w, a_w, b_w, d_w, top):
     eq = eq_w.get_value()
     a = a_w.get_value()
     b = b_w.get_value()
     d = d_w.get_value()
     top.grab_release()
     top.destroy()
     if eq:
         self.solving_obj = IntegralNumerical(equation=eq, a=a, b=b, delta=d)
         self.show_result()
Exemplo n.º 2
0
 def next(self):
     rad1 = self.rad1.get_value()
     rad2 = self.rad2.get_value()
     if rad1 == 'mid point' and rad2 == 'file':
         tkMessageBox.showerror('file data error', message="for this method you can't use data from file. you can chose equation.", )
     else:
         if rad2 == 'file':
             path = askopenfilename()
             self.solving_obj = IntegralNumerical(path=path)
             self.show_result()
         else:
             self.show_eq_fram()
Exemplo n.º 3
0
class CalculateSetting(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.rad1 = RadioFieldVertical(self, "solving methodes", ['left hand', 'right hand', 'mid point', 'trapezoidal', 'simpson'], 'simpson')
        self.rad1.pack(side=LEFT, anchor=W, fill=Y, pady=10, padx=5)

        self.rad2 = RadioFieldVertical(self, "data from", ['file', 'equation'], 'equation')
        self.rad2.pack(side=TOP, anchor=W, pady=10, padx=5)

        self.but = ButtonList(self, [('next', lambda:self.next()), ('close', lambda:self.close(),)])
        self.but.pack(side=BOTTOM, anchor=S, fill=X, expand=True, padx=5, pady=5)
        
        self.result_row = Frame(self).pack(side=BOTTOM, fill=X)

    solving_obj = None
    result_label = None        
        
    def next(self):
        rad1 = self.rad1.get_value()
        rad2 = self.rad2.get_value()
        if rad1 == 'mid point' and rad2 == 'file':
            tkMessageBox.showerror('file data error', message="for this method you can't use data from file. you can chose equation.", )
        else:
            if rad2 == 'file':
                path = askopenfilename()
                self.solving_obj = IntegralNumerical(path=path)
                self.show_result()
            else:
                self.show_eq_fram()

    def show_eq_fram(self):
        top = Toplevel()
        eq = EntryField(top, 'equation')
        eq.pack(side=TOP, fill=X, pady=5, padx=5)

        a = EntryField(top, 'a')
        a.pack(side=TOP, fill=X, pady=5, padx=5)

        b = EntryField(top, 'b')
        b.pack(side=TOP, fill=X, pady=5, padx=5)

        delta = EntryField(top, 'delta')
        delta.pack(side=TOP, fill=X, pady=5, padx=5)

        Button(top, text='ok', command=lambda:self.set_eq_to_obj(eq, a, b, delta, top)).pack(side=BOTTOM, fill=X, padx=30, pady=5)
        # top.mainloop()
        top.grab_set()
        
    def set_eq_to_obj(self, eq_w, a_w, b_w, d_w, top):
        eq = eq_w.get_value()
        a = a_w.get_value()
        b = b_w.get_value()
        d = d_w.get_value()
        top.grab_release()
        top.destroy()
        if eq:
            self.solving_obj = IntegralNumerical(equation=eq, a=a, b=b, delta=d)
            self.show_result()
               
    def get_result(self):
        method = self.rad1.get_value()
        result = 0
        if method == 'left hand':
            result = self.solving_obj.left_hand()
        elif method == 'right hand':
            result = self.solving_obj.right_hand()
        elif method == 'mid point':
            result = self.solving_obj.mid_point()
        elif method == 'trapezoidal':
            result = self.solving_obj.trapezoidal()
        elif method == 'simpson':
            result = self.solving_obj.simpson()
        return result
        
    def show_result(self):
        result = self.get_result()
        if self.result_label is None:
            self.result_label = Label(self.result_row, text=str(result), fg='blue')
            Label(self.result_row, text="result :").pack(side=LEFT, anchor=E, pady=10)
            self.result_label.pack(side=RIGHT, anchor=W, expand=TRUE, pady=10)
        else:
            self.result_label.configure(text=str(result))
    
    @staticmethod
    def close():
        root.destroy()