def test_calendar_selection(self): widget = Calendar(self.window, month=3, year=2011, day=10, maxdate=date(2013, 1, 1), mindate=date(2010, 1, 1)) widget.pack() self.assertEqual(widget.selection_get(), date(2011, 3, 10)) widget.selection_set(date(2012, 4, 11)) self.assertEqual(widget.selection_get(), date(2012, 4, 11)) self.assertEqual(widget._date, date(2012, 4, 1)) widget.selection_set(datetime(2012, 5, 11)) self.assertEqual(widget.selection_get(), date(2012, 5, 11)) self.assertNotIsInstance(widget.selection_get(), datetime) self.assertIsInstance(widget.selection_get(), date) widget.selection_set(datetime(2012, 5, 21).strftime('%x')) self.assertEqual(widget.selection_get(), date(2012, 5, 21)) self.assertNotIsInstance(widget.selection_get(), datetime) self.assertIsInstance(widget.selection_get(), date) widget.selection_set(date(2018, 4, 11)) self.assertEqual(widget.selection_get(), date(2013, 1, 1)) widget.selection_set(date(2001, 4, 11)) self.assertEqual(widget.selection_get(), date(2010, 1, 1)) widget.selection_clear() self.assertIsNone(widget.selection_get()) # test Swedish locale widget.destroy() widget = Calendar(self.window, locale='sv_SE') widget.pack() widget.selection_set(format_date(date(2012, 4, 11), 'short', 'sv_SE'))
def test_calendar_buttons_functions(self): widget = Calendar(self.window) widget.pack() widget._prev_month() widget._next_month() widget._prev_year() widget._next_year() widget._remove_selection() widget.selection_set(format_date(date(2018, 12, 31), 'short')) self.assertEqual(widget.selection_get(), date(2018, 12, 31)) with self.assertRaises(ValueError): widget.selection_set("ab") widget.selection_set(None) self.assertIsNone(widget.selection_get()) widget.selection_set(date(2015, 12, 31)) self.assertEqual(widget.selection_get(), date(2015, 12, 31)) widget.config(selectmode='none') self.assertIsNone(widget.selection_get()) l = ttk.Label(widget, text="12") widget._on_click(TestEvent(widget=l)) self.assertIsNone(widget.selection_get()) self.window.update() widget.config(selectmode='day') l = ttk.Label(widget, text="12") widget._on_click(TestEvent(widget=l)) self.window.update() self.assertEqual(widget.selection_get(), date(2015, 12, 12)) widget.config(state='disabled') l = ttk.Label(widget, text="14") widget._on_click(TestEvent(widget=l)) self.window.update() self.assertEqual(widget.selection_get(), date(2015, 12, 12))
def test_dateentry_functions(self): widget = DateEntry(self.window, width=12, background='darkblue', foreground='white', borderwidth=2) widget.pack() self.window.update() widget.set_date(format_date(date(2018, 12, 31), 'short')) self.assertEqual(widget.get_date(), date(2018, 12, 31)) with self.assertRaises(ValueError): widget.set_date("ab") widget.set_date(date(2015, 12, 31)) self.assertEqual(widget.get_date(), date(2015, 12, 31)) self.assertEqual(widget.get(), format_date(date(2015, 12, 31), 'short')) widget.delete(0, "end") widget.insert(0, "abc") self.window.focus_force() self.assertEqual(widget.get_date(), date(2015, 12, 31)) widget._on_motion(TestEvent(x=10, y=20)) widget._on_b1_press(TestEvent(x=10, y=20)) widget._on_b1_press(TestEvent(x=widget.winfo_width() - 2, y=2)) widget._on_focus_out_cal(TestEvent(x=10, y=20)) widget.state(("disabled", )) self.window.update() self.assertIn("disabled", widget.state()) widget.drop_down() self.window.update() widget._select() self.window.update() widget.drop_down() self.window.update() widget.drop_down() self.window.update() widget.configure(state='readonly') self.window.update() widget._select() self.assertIn('readonly', widget.state())
def test_calendar_textvariable(self): var = tk.StringVar(self.window) widget = Calendar(self.window, selectmode='day', year=2015, month=1, day=3, textvariable=var) widget.pack() self.window.update() self.assertEqual('', var.get()) self.assertEqual('', widget.get_date()) self.assertEqual(date(2015, 1, 1), widget._date) widget.selection_set(date(2018, 11, 21)) self.window.update() self.assertEqual(format_date(date(2018, 11, 21), 'short'), var.get()) self.assertEqual(format_date(date(2018, 11, 21), 'short'), widget.get_date()) widget.selection_set(None) self.window.update() self.assertEqual('', widget.get_date()) self.assertEqual('', var.get()) var.set(format_date(date(2014, 3, 2), 'short')) self.window.update() self.assertEqual(date(2014, 3, 2), widget.selection_get()) self.assertEqual(format_date(date(2014, 3, 2), 'short'), var.get()) self.assertEqual(format_date(date(2014, 3, 2), 'short'), widget.get_date()) try: var.set('a') except tk.TclError: # some versions of python raise an error because of the exception # raised inside the trace pass self.window.update() self.assertEqual(date(2014, 3, 2), widget.selection_get()) self.assertEqual(format_date(date(2014, 3, 2), 'short'), var.get()) self.assertEqual(format_date(date(2014, 3, 2), 'short'), widget.get_date()) var.set('') self.window.update() self.assertIsNone(widget.selection_get()) self.assertEqual('', var.get()) self.assertEqual('', widget.get_date()) var2 = tk.StringVar(widget, format_date(date(2011, 1, 21), 'short')) widget['textvariable'] = var2 self.window.update() self.assertEqual(widget.get_date(), var2.get()) self.assertEqual('', var.get())
def test_calendar_init(self): widget = Calendar(self.window) widget.pack() self.window.update() widget.destroy() widget = Calendar(self.window, showweeknumbers=False) self.window.update() widget.destroy() today = format_date(date.today(), 'short') var = tk.StringVar(self.window, today) widget = Calendar(self.window, textvariable=var, month=3, year=2011, day=10) self.window.update() self.assertEqual(var.get(), today) self.assertEqual(widget.selection_get(), date.today()) widget.destroy() widget = Calendar(self.window, font="Arial 14", selectmode='day', cursor="hand1", year=2018, month=2, day=5) widget.pack() self.window.update() self.assertEqual(widget.selection_get(), date(2018, 2, 5)) self.assertEqual(widget.get_displayed_month(), (2, 2018)) w, d = widget._get_day_coords(date(2018, 2, 5)) self.assertEqual(widget._calendar[w][d].cget('text'), '5') widget.destroy() widget = Calendar(self.window, year=2011, month=2, day=35) widget.pack() self.window.update() self.assertIsNone(widget.selection_get()) self.assertEqual(widget._date, date(2011, 2, 1)) widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, month=23) widget.pack() self.window.update() widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, borderwidth="e") widget.pack() self.window.update() widget.destroy() with self.assertRaises(TypeError): widget = Calendar(self.window, weekenddays=7) widget.pack() self.window.update() widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, weekenddays="e") widget.pack() self.window.update() widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, weekenddays=[1]) widget.pack() self.window.update() widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, weekenddays=['a', 'b']) widget.pack() self.window.update() widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, weekenddays=[12, 3]) widget.pack() self.window.update() widget.destroy() with self.assertRaises(TypeError): widget = Calendar(self.window, maxdate="e") widget.pack() self.window.update() widget.destroy() widget = Calendar(self.window, mindate=datetime(2013, 5, 22, 10, 5), maxdate=datetime.today()) widget.pack() self.window.update() widget.destroy() with self.assertRaises(TypeError): widget = Calendar(self.window, mindate="e") widget.pack() self.window.update() widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, mindate=date(2018, 4, 5), maxdate=date(2018, 4, 4)) widget.pack() self.window.update() widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, firstweekday="e") widget.pack() self.window.update() widget.destroy() widget = Calendar(self.window, font="Arial 14", selectmode='day', cursor="hand1", year=2018, month=2, day=5) widget.pack() self.window.update() widget.destroy() widget = Calendar(self.window, selectmode='none', year=2015, month=1, background="black", foreground="white", key="a") widget.pack() self.window.update() self.assertIsNone(widget.selection_get()) self.assertEqual(widget._date, date(2015, 1, 1)) widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, selectmode='wrong') widget.pack() self.window.update() widget.destroy()
def test_calendar_init(self): widget = Calendar(self.window) widget.pack() self.window.update() widget.destroy() widget = Calendar(self.window, showweeknumbers=False) self.window.update() widget.destroy() today = format_date(date.today(), 'short') var = tk.StringVar(self.window, today) widget = Calendar(self.window, textvariable=var, month=3, year=2011, day=10) self.window.update() self.assertEqual(var.get(), today) self.assertEqual(widget.selection_get(), date.today()) widget.destroy() widget = Calendar(self.window, font="Arial 14", selectmode='day', cursor="hand1", year=2018, month=2, day=5) widget.pack() self.window.update() self.assertEqual(widget.selection_get(), date(2018, 2, 5)) widget.destroy() widget = Calendar(self.window, year=2011, month=2, day=35) widget.pack() self.window.update() self.assertIsNone(widget.selection_get()) self.assertEqual(widget._date, date(2011, 2, 1)) widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, month=23) widget.pack() self.window.update() widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, borderwidth="e") widget.pack() self.window.update() widget.destroy() widget = Calendar(self.window, font="Arial 14", selectmode='day', cursor="hand1", year=2018, month=2, day=5) widget.pack() self.window.update() widget.destroy() widget = Calendar(self.window, selectmode='none', year=2015, month=1, background="black", foreground="white", key="a") widget.pack() self.window.update() self.assertIsNone(widget.selection_get()) self.assertEqual(widget._date, date(2015, 1, 1)) widget.destroy() with self.assertRaises(ValueError): widget = Calendar(self.window, selectmode='wrong') widget.pack() self.window.update() widget.destroy()