Skip to content

Commit 5492e1e

Browse files
feat(table): add support for time,date,datetime (#522)
1 parent e744d97 commit 5492e1e

4 files changed

Lines changed: 296 additions & 19 deletions

File tree

demo/showcase/table.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,49 @@
2323
# SOFTWARE.
2424

2525
import sys, os, argparse
26+
import datetime
27+
import random
2628

2729
sys.path.append(os.path.join(sys.path[0],'../../libs/pyTermTk'))
2830
import TermTk as ttk
2931

3032
sys.path.append(os.path.join(sys.path[0],'..'))
3133
from showcase._showcasehelper import getUtfWord
3234

35+
# Random date between two dates
36+
def random_date(start_date, end_date):
37+
time_between = end_date - start_date
38+
days_between = time_between.days
39+
random_days = random.randrange(days_between)
40+
return start_date + datetime.timedelta(days=random_days)
41+
42+
# Random time
43+
def random_time():
44+
hour = random.randint(0, 23)
45+
minute = random.randint(0, 59)
46+
second = random.randint(0, 59)
47+
return datetime.time(hour, minute, second)
48+
49+
# Random datetime
50+
def random_datetime(start_datetime, end_datetime):
51+
time_between = end_datetime - start_datetime
52+
total_seconds = int(time_between.total_seconds())
53+
random_seconds = random.randrange(total_seconds)
54+
return start_datetime + datetime.timedelta(seconds=random_seconds)
55+
3356
def demoTTkTable(root= None):
3457
# Basic Table Demo
3558

3659
# Setup a model using a 2d list of random values
37-
dataList = [[f"0x{i:04X}"] + [int(i*100),float(i*100),ttk.TTkString(getUtfWord(),ttk.TTkColor.YELLOW)] + [getUtfWord() for _ in range(10)] for i in range(101)]
60+
dataList = [
61+
[f"0x{i:04X}"] +
62+
[int(i*100), float(i*100), ttk.TTkString(getUtfWord(),ttk.TTkColor.YELLOW)] +
63+
[random_time()] +
64+
[random_date(datetime.date(2020,1,1), datetime.date(2025,12,31))] +
65+
[random_datetime(datetime.datetime(2020,1,1), datetime.datetime(2025,12,31))] +
66+
[getUtfWord() for _ in range(10)]
67+
for i in range(101)
68+
]
3869
tableModel = ttk.TTkTableModelList(data=dataList)
3970

4071
# Init the table with the model defilned

libs/pyTermTk/TermTk/TTkAbstract/abstracttablemodel.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
from typing import Tuple,Any
2626

27+
import datetime
28+
2729
from TermTk.TTkCore.constant import TTkK
2830
from TermTk.TTkCore.string import TTkString
2931
from TermTk.TTkCore.signal import pyTTkSignal, pyTTkSlot
@@ -288,7 +290,7 @@ def displayData(self, row: int, col: int) -> Tuple[TTkString, TTkK.Alignment]:
288290
'''
289291
data = self.data(row,col)
290292
retData = TTkAbstractTableModel._dataToTTkString(data)
291-
if isinstance(data, (int,float)):
293+
if isinstance(data, (int,float,datetime.time, datetime.date, datetime.datetime)):
292294
return retData, TTkK.Alignment.RIGHT_ALIGN
293295
return retData, TTkK.Alignment.LEFT_ALIGN
294296

0 commit comments

Comments
 (0)