コード例 #1
0
class GUIView(tk.Frame):
    CAST_TYPES = ['fahrenheit', 'kelvin', 'newton']
    view_model = TemperatureConverterViewModel()

    def convert(self):
        self.view_model.set_input_value(self.text_value.get(1.0, tk.END))
        self.view_model.set_cast_type(self.CAST_TYPES[self.cast_types.current()])
        self.view_model.convert()
        self.result_label.configure(text=self.view_model.get_output_value())
        self.error_label.configure(text=self.view_model.get_error())

    def __init__(self):
        tk.Frame.__init__(self)
        self.master.title("Temperature converter")
        self.master.minsize(width=150, height=150)
        self.grid(sticky=tk.W + tk.E + tk.N + tk.S)

        self.celsius_label = tk.Label(self, text="From celsius", fg='black', font="Arial 14")
        self.celsius_label.pack()

        self.text_value = tk.Text(self, height=1, width=30, font="Arial 14")
        self.text_value.pack()

        self.cast_types_label = tk.Label(self, text="to", fg='black', font="Arial 14")
        self.cast_types_label.pack()

        self.cast_types = ttk.Combobox(self, height=1, width=30, values=self.CAST_TYPES, font="Arial 14")
        self.cast_types.current(0)
        self.cast_types.pack()

        self.convert = tk.Button(self, text="convert", width=15, height=1, font="Arial 14", bg="light blue",
                                 command=self.convert)
        self.convert.pack()

        self.result_label = tk.Label(self, text="", fg='black', font="Arial 14")
        self.result_label.pack()

        self.error_label = tk.Label(self, text="", fg='black', font="Arial 14")
        self.error_label.pack()
コード例 #2
0
 def test_clear_error(self):
     view_model = TemperatureConverterViewModel()
     view_model.set_input_value("some not a number string")
     view_model.convert()
     view_model.clear_error()
     self.assertEqual(view_model.get_error(), '')
コード例 #3
0
 def test_preset_cast_type(self):
     view_model = TemperatureConverterViewModel()
     self.assertEqual(view_model.cast_type, 'fahrenheit')
コード例 #4
0
 def test_output_converting_case_nan(self):
     view_model = TemperatureConverterViewModel()
     view_model.set_input_value("some not a number string")
     view_model.convert()
     self.assertEqual(view_model.get_output_value(), '')
コード例 #5
0
 def test_clear_output(self):
     view_model = TemperatureConverterViewModel()
     view_model.set_input_value("-13,5")
     view_model.set_cast_type("newton")
     view_model.convert()
     view_model.clear_output()
     self.assertEqual(view_model.get_output_value(), '')
コード例 #6
0
 def test_error_converting_case_nan(self):
     view_model = TemperatureConverterViewModel()
     view_model.set_input_value("some not a number string")
     view_model.convert()
     self.assertEqual(view_model.get_error(),
                      "The value is not numeric.\nEnter a numeric value.")
コード例 #7
0
 def test_create_view_model(self):
     view_model = TemperatureConverterViewModel()
     self.assertTrue(isinstance(view_model, TemperatureConverterViewModel))
コード例 #8
0
 def test_converting_case_newton(self):
     view_model = TemperatureConverterViewModel()
     view_model.set_input_value("-13,5")
     view_model.set_cast_type("newton")
     view_model.convert()
     self.assertAlmostEqual(view_model.get_output_value(), -4.455)
コード例 #9
0
 def test_converting_case_kelvin(self):
     view_model = TemperatureConverterViewModel()
     view_model.set_input_value("-13,5")
     view_model.set_cast_type("kelvin")
     view_model.convert()
     self.assertAlmostEqual(view_model.get_output_value(), 259.65)
コード例 #10
0
 def test_converting_case_fahrenheit(self):
     view_model = TemperatureConverterViewModel()
     view_model.set_input_value("-13,5")
     view_model.convert()
     self.assertAlmostEqual(view_model.get_output_value(), 7.7)
コード例 #11
0
 def test_cast_type_setter(self):
     view_model = TemperatureConverterViewModel()
     view_model.set_cast_type('newton')
     self.assertEqual(view_model.get_cast_type(), 'newton')
コード例 #12
0
 def test_input_value_setter(self):
     view_model = TemperatureConverterViewModel()
     view_model.set_input_value(15.8)
     self.assertEqual(view_model.get_input_value(), 15.8)