tksheet 7.4.5__py3-none-any.whl → 7.4.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tksheet/__init__.py +1 -1
- tksheet/column_headers.py +28 -28
- tksheet/constants.py +4 -3
- tksheet/find_window.py +8 -8
- tksheet/formatters.py +39 -39
- tksheet/functions.py +53 -57
- tksheet/main_table.py +153 -122
- tksheet/other_classes.py +11 -11
- tksheet/row_index.py +27 -27
- tksheet/sheet.py +99 -110
- tksheet/sorting.py +19 -18
- tksheet/text_editor.py +9 -9
- tksheet/tksheet_types.py +187 -0
- tksheet/top_left_rectangle.py +13 -12
- {tksheet-7.4.5.dist-info → tksheet-7.4.6.dist-info}/METADATA +1 -1
- tksheet-7.4.6.dist-info/RECORD +22 -0
- tksheet-7.4.5.dist-info/RECORD +0 -22
- {tksheet-7.4.5.dist-info → tksheet-7.4.6.dist-info}/LICENSE.txt +0 -0
- {tksheet-7.4.5.dist-info → tksheet-7.4.6.dist-info}/WHEEL +0 -0
- {tksheet-7.4.5.dist-info → tksheet-7.4.6.dist-info}/top_level.txt +0 -0
tksheet/sheet.py
CHANGED
@@ -9,7 +9,7 @@ from itertools import accumulate, chain, filterfalse, islice, product, repeat
|
|
9
9
|
from operator import attrgetter
|
10
10
|
from timeit import default_timer
|
11
11
|
from tkinter import ttk
|
12
|
-
from typing import Literal
|
12
|
+
from typing import Any, Literal
|
13
13
|
|
14
14
|
from .column_headers import ColumnHeaders
|
15
15
|
from .constants import (
|
@@ -77,7 +77,7 @@ from .themes import (
|
|
77
77
|
theme_light_blue,
|
78
78
|
theme_light_green,
|
79
79
|
)
|
80
|
-
from .tksheet_types import AnyIter, CellPropertyKey, CreateSpanTypes
|
80
|
+
from .tksheet_types import AnyIter, Binding, CellPropertyKey, CreateSpanTypes, ExtraBinding
|
81
81
|
from .top_left_rectangle import TopLeftRectangle
|
82
82
|
|
83
83
|
|
@@ -94,14 +94,14 @@ class Sheet(tk.Frame):
|
|
94
94
|
show_y_scrollbar: bool = True,
|
95
95
|
width: int | None = None,
|
96
96
|
height: int | None = None,
|
97
|
-
headers: None | list[
|
98
|
-
header: None | list[
|
99
|
-
row_index: None | list[
|
100
|
-
index: None | list[
|
97
|
+
headers: None | list[Any] = None,
|
98
|
+
header: None | list[Any] = None,
|
99
|
+
row_index: None | list[Any] = None,
|
100
|
+
index: None | list[Any] = None,
|
101
101
|
default_header: Literal["letters", "numbers", "both"] | None = "letters",
|
102
102
|
default_row_index: Literal["letters", "numbers", "both"] | None = "numbers",
|
103
|
-
data_reference: None | Sequence[Sequence[
|
104
|
-
data: None | Sequence[Sequence[
|
103
|
+
data_reference: None | Sequence[Sequence[Any]] = None,
|
104
|
+
data: None | Sequence[Sequence[Any]] = None,
|
105
105
|
# either (start row, end row, "rows"), (start column, end column, "rows") or
|
106
106
|
# (cells start row, cells start column, cells end row, cells end column, "cells") # noqa: E501
|
107
107
|
startup_select: tuple[int, int, str] | tuple[int, int, int, int, str] = None,
|
@@ -531,7 +531,7 @@ class Sheet(tk.Frame):
|
|
531
531
|
|
532
532
|
def set_header_data(
|
533
533
|
self,
|
534
|
-
value:
|
534
|
+
value: Any,
|
535
535
|
c: int | None | AnyIter[int] = None,
|
536
536
|
redraw: bool = True,
|
537
537
|
) -> Sheet:
|
@@ -550,12 +550,12 @@ class Sheet(tk.Frame):
|
|
550
550
|
|
551
551
|
def headers(
|
552
552
|
self,
|
553
|
-
newheaders:
|
553
|
+
newheaders: Any = None,
|
554
554
|
index: None | int = None,
|
555
555
|
reset_col_positions: bool = False,
|
556
556
|
show_headers_if_not_sheet: bool = True,
|
557
557
|
redraw: bool = True,
|
558
|
-
) ->
|
558
|
+
) -> Any:
|
559
559
|
self.set_refresh_timer(redraw)
|
560
560
|
return self.MT.headers(
|
561
561
|
newheaders,
|
@@ -567,7 +567,7 @@ class Sheet(tk.Frame):
|
|
567
567
|
|
568
568
|
def set_index_data(
|
569
569
|
self,
|
570
|
-
value:
|
570
|
+
value: Any,
|
571
571
|
r: int | None | AnyIter[int] = None,
|
572
572
|
redraw: bool = True,
|
573
573
|
) -> Sheet:
|
@@ -586,12 +586,12 @@ class Sheet(tk.Frame):
|
|
586
586
|
|
587
587
|
def row_index(
|
588
588
|
self,
|
589
|
-
newindex:
|
589
|
+
newindex: Any = None,
|
590
590
|
index: None | int = None,
|
591
591
|
reset_row_positions: bool = False,
|
592
592
|
show_index_if_not_sheet: bool = True,
|
593
593
|
redraw: bool = True,
|
594
|
-
) ->
|
594
|
+
) -> Any:
|
595
595
|
self.set_refresh_timer(redraw)
|
596
596
|
return self.MT.row_index(
|
597
597
|
newindex,
|
@@ -603,7 +603,7 @@ class Sheet(tk.Frame):
|
|
603
603
|
|
604
604
|
# Bindings and Functionality
|
605
605
|
|
606
|
-
def enable_bindings(self, *bindings:
|
606
|
+
def enable_bindings(self, *bindings: Binding) -> Sheet:
|
607
607
|
"""
|
608
608
|
List of available bindings:
|
609
609
|
- "all"
|
@@ -653,7 +653,7 @@ class Sheet(tk.Frame):
|
|
653
653
|
self.MT.enable_bindings(bindings)
|
654
654
|
return self
|
655
655
|
|
656
|
-
def disable_bindings(self, *bindings:
|
656
|
+
def disable_bindings(self, *bindings: Binding) -> Sheet:
|
657
657
|
"""
|
658
658
|
List of available bindings:
|
659
659
|
- "all"
|
@@ -700,7 +700,7 @@ class Sheet(tk.Frame):
|
|
700
700
|
|
701
701
|
def extra_bindings(
|
702
702
|
self,
|
703
|
-
bindings:
|
703
|
+
bindings: ExtraBinding | Sequence[ExtraBinding] | None = None,
|
704
704
|
func: Callable | None = None,
|
705
705
|
) -> Sheet:
|
706
706
|
"""
|
@@ -1260,27 +1260,25 @@ class Sheet(tk.Frame):
|
|
1260
1260
|
canvas.basic_bindings(enable)
|
1261
1261
|
return self
|
1262
1262
|
|
1263
|
-
def cut(self, event:
|
1263
|
+
def cut(self, event: Any = None, validation: bool = True) -> None | EventDataDict:
|
1264
1264
|
return self.MT.ctrl_x(event, validation)
|
1265
1265
|
|
1266
|
-
def copy(self, event:
|
1266
|
+
def copy(self, event: Any = None) -> None | EventDataDict:
|
1267
1267
|
return self.MT.ctrl_c(event)
|
1268
1268
|
|
1269
|
-
def paste(self, event:
|
1269
|
+
def paste(self, event: Any = None, validation: bool = True) -> None | EventDataDict:
|
1270
1270
|
return self.MT.ctrl_v(event, validation)
|
1271
1271
|
|
1272
|
-
def delete(self, event:
|
1272
|
+
def delete(self, event: Any = None, validation: bool = True) -> None | EventDataDict:
|
1273
1273
|
return self.MT.delete_key(event, validation)
|
1274
1274
|
|
1275
|
-
def undo(self, event:
|
1275
|
+
def undo(self, event: Any = None) -> None | EventDataDict:
|
1276
1276
|
return self.MT.undo(event)
|
1277
1277
|
|
1278
|
-
def redo(self, event:
|
1278
|
+
def redo(self, event: Any = None) -> None | EventDataDict:
|
1279
1279
|
return self.MT.redo(event)
|
1280
1280
|
|
1281
|
-
def has_focus(
|
1282
|
-
self,
|
1283
|
-
) -> bool:
|
1281
|
+
def has_focus(self) -> bool:
|
1284
1282
|
"""
|
1285
1283
|
Check if any Sheet widgets have focus
|
1286
1284
|
Includes child widgets such as scroll bars
|
@@ -1340,10 +1338,10 @@ class Sheet(tk.Frame):
|
|
1340
1338
|
hdisp: bool = True,
|
1341
1339
|
transposed: bool = False,
|
1342
1340
|
ndim: int = 0,
|
1343
|
-
convert:
|
1341
|
+
convert: Any = None,
|
1344
1342
|
undo: bool = True,
|
1345
1343
|
emit_event: bool = False,
|
1346
|
-
widget:
|
1344
|
+
widget: Any = None,
|
1347
1345
|
expand: None | str = None,
|
1348
1346
|
formatter_options: dict | None = None,
|
1349
1347
|
**kwargs,
|
@@ -1386,10 +1384,7 @@ class Sheet(tk.Frame):
|
|
1386
1384
|
|
1387
1385
|
# Named Spans
|
1388
1386
|
|
1389
|
-
def named_span(
|
1390
|
-
self,
|
1391
|
-
span: Span,
|
1392
|
-
) -> Span:
|
1387
|
+
def named_span(self, span: Span) -> Span:
|
1393
1388
|
if span.name in self.MT.named_spans:
|
1394
1389
|
raise ValueError(f"Span '{span.name}' already exists.")
|
1395
1390
|
if not span.name:
|
@@ -1453,7 +1448,7 @@ class Sheet(tk.Frame):
|
|
1453
1448
|
del self.MT.named_spans[name]
|
1454
1449
|
return self
|
1455
1450
|
|
1456
|
-
def set_named_spans(self, named_spans: None | dict = None) -> Sheet:
|
1451
|
+
def set_named_spans(self, named_spans: None | dict[str, Span] = None) -> Sheet:
|
1457
1452
|
if named_spans is None:
|
1458
1453
|
for name in self.MT.named_spans:
|
1459
1454
|
self.del_named_span(name)
|
@@ -1461,10 +1456,10 @@ class Sheet(tk.Frame):
|
|
1461
1456
|
self.MT.named_spans = named_spans
|
1462
1457
|
return self
|
1463
1458
|
|
1464
|
-
def get_named_span(self, name: str) -> dict:
|
1459
|
+
def get_named_span(self, name: str) -> dict[str, Span]:
|
1465
1460
|
return self.MT.named_spans[name]
|
1466
1461
|
|
1467
|
-
def get_named_spans(self) -> dict:
|
1462
|
+
def get_named_spans(self) -> dict[str, Span]:
|
1468
1463
|
return self.MT.named_spans
|
1469
1464
|
|
1470
1465
|
# Getting Sheet Data
|
@@ -1475,10 +1470,7 @@ class Sheet(tk.Frame):
|
|
1475
1470
|
) -> Span:
|
1476
1471
|
return self.span_from_key(*key)
|
1477
1472
|
|
1478
|
-
def span_from_key(
|
1479
|
-
self,
|
1480
|
-
*key: CreateSpanTypes,
|
1481
|
-
) -> None | Span:
|
1473
|
+
def span_from_key(self, *key: CreateSpanTypes) -> None | Span:
|
1482
1474
|
if not key:
|
1483
1475
|
key = (None, None, None, None)
|
1484
1476
|
span = key_to_span(key if len(key) != 1 else key[0], self.MT.named_spans, self)
|
@@ -1493,10 +1485,7 @@ class Sheet(tk.Frame):
|
|
1493
1485
|
totalcols=self.MT.total_data_cols,
|
1494
1486
|
)
|
1495
1487
|
|
1496
|
-
def get_data(
|
1497
|
-
self,
|
1498
|
-
*key: CreateSpanTypes,
|
1499
|
-
) -> object:
|
1488
|
+
def get_data(self, *key: CreateSpanTypes) -> Any:
|
1500
1489
|
"""
|
1501
1490
|
e.g. retrieves entire table as pandas dataframe
|
1502
1491
|
sheet["A1"].expand().options(pandas.DataFrame).data
|
@@ -1637,20 +1626,20 @@ class Sheet(tk.Frame):
|
|
1637
1626
|
c: int,
|
1638
1627
|
r_ops: bool = True,
|
1639
1628
|
c_ops: bool = True,
|
1640
|
-
) ->
|
1629
|
+
) -> Any:
|
1641
1630
|
return self.MT.get_value_for_empty_cell(r, c, r_ops, c_ops)
|
1642
1631
|
|
1643
1632
|
@property
|
1644
|
-
def data(self):
|
1633
|
+
def data(self) -> Sequence[Sequence[Any]]:
|
1645
1634
|
return self.MT.data
|
1646
1635
|
|
1647
|
-
def __iter__(self) -> Iterator[list[
|
1636
|
+
def __iter__(self) -> Iterator[list[Any] | tuple[Any]]:
|
1648
1637
|
return self.MT.data.__iter__()
|
1649
1638
|
|
1650
|
-
def __reversed__(self) -> Iterator[list[
|
1639
|
+
def __reversed__(self) -> Iterator[list[Any] | tuple[Any]]:
|
1651
1640
|
return reversed(self.MT.data)
|
1652
1641
|
|
1653
|
-
def __contains__(self, key:
|
1642
|
+
def __contains__(self, key: Any) -> bool:
|
1654
1643
|
if isinstance(key, (list, tuple)):
|
1655
1644
|
return key in self.MT.data
|
1656
1645
|
return any(key in row for row in self.MT.data)
|
@@ -1722,7 +1711,7 @@ class Sheet(tk.Frame):
|
|
1722
1711
|
reset_highlights: bool = False,
|
1723
1712
|
keep_formatting: bool = True,
|
1724
1713
|
delete_options: bool = False,
|
1725
|
-
) ->
|
1714
|
+
) -> Any:
|
1726
1715
|
if data is None:
|
1727
1716
|
data = []
|
1728
1717
|
if verify and (not isinstance(data, list) or not all(isinstance(row, list) for row in data)):
|
@@ -1741,7 +1730,7 @@ class Sheet(tk.Frame):
|
|
1741
1730
|
)
|
1742
1731
|
|
1743
1732
|
@data.setter
|
1744
|
-
def data(self, value: list[list[
|
1733
|
+
def data(self, value: list[list[Any]]) -> None:
|
1745
1734
|
self.data_reference(value)
|
1746
1735
|
|
1747
1736
|
def new_tksheet_event(self) -> EventDataDict:
|
@@ -1755,7 +1744,7 @@ class Sheet(tk.Frame):
|
|
1755
1744
|
def set_data(
|
1756
1745
|
self,
|
1757
1746
|
*key: CreateSpanTypes,
|
1758
|
-
data:
|
1747
|
+
data: Any = None,
|
1759
1748
|
undo: bool | None = None,
|
1760
1749
|
emit_event: bool | None = None,
|
1761
1750
|
redraw: bool = True,
|
@@ -2074,8 +2063,8 @@ class Sheet(tk.Frame):
|
|
2074
2063
|
self,
|
2075
2064
|
datarn: int,
|
2076
2065
|
datacn: int,
|
2077
|
-
value:
|
2078
|
-
event_data:
|
2066
|
+
value: Any,
|
2067
|
+
event_data: EventDataDict,
|
2079
2068
|
fmt_kw: dict | None = None,
|
2080
2069
|
check_readonly: bool = False,
|
2081
2070
|
) -> EventDataDict:
|
@@ -2087,8 +2076,8 @@ class Sheet(tk.Frame):
|
|
2087
2076
|
def event_data_set_index_cell(
|
2088
2077
|
self,
|
2089
2078
|
datarn: int,
|
2090
|
-
value:
|
2091
|
-
event_data:
|
2079
|
+
value: Any,
|
2080
|
+
event_data: EventDataDict,
|
2092
2081
|
check_readonly: bool = False,
|
2093
2082
|
) -> EventDataDict:
|
2094
2083
|
if self.RI.input_valid_for_cell(datarn, value, check_readonly=check_readonly):
|
@@ -2099,8 +2088,8 @@ class Sheet(tk.Frame):
|
|
2099
2088
|
def event_data_set_header_cell(
|
2100
2089
|
self,
|
2101
2090
|
datacn: int,
|
2102
|
-
value:
|
2103
|
-
event_data:
|
2091
|
+
value: Any,
|
2092
|
+
event_data: EventDataDict,
|
2104
2093
|
check_readonly: bool = False,
|
2105
2094
|
) -> EventDataDict:
|
2106
2095
|
if self.CH.input_valid_for_cell(datacn, value, check_readonly=check_readonly):
|
@@ -2110,7 +2099,7 @@ class Sheet(tk.Frame):
|
|
2110
2099
|
|
2111
2100
|
def insert_row(
|
2112
2101
|
self,
|
2113
|
-
row: list[
|
2102
|
+
row: list[Any] | tuple[Any] | None = None,
|
2114
2103
|
idx: str | int | None = None,
|
2115
2104
|
height: int | None = None,
|
2116
2105
|
row_index: bool = False,
|
@@ -2132,7 +2121,7 @@ class Sheet(tk.Frame):
|
|
2132
2121
|
|
2133
2122
|
def insert_column(
|
2134
2123
|
self,
|
2135
|
-
column: list[
|
2124
|
+
column: list[Any] | tuple[Any] | None = None,
|
2136
2125
|
idx: str | int | None = None,
|
2137
2126
|
width: int | None = None,
|
2138
2127
|
header: bool = False,
|
@@ -2154,7 +2143,7 @@ class Sheet(tk.Frame):
|
|
2154
2143
|
|
2155
2144
|
def insert_rows(
|
2156
2145
|
self,
|
2157
|
-
rows: list[tuple[
|
2146
|
+
rows: list[tuple[Any] | list[Any]] | tuple[tuple[Any] | list[Any]] | int = 1,
|
2158
2147
|
idx: str | int | None = None,
|
2159
2148
|
heights: list[int] | tuple[int] | None = None,
|
2160
2149
|
row_index: bool = False,
|
@@ -2235,7 +2224,7 @@ class Sheet(tk.Frame):
|
|
2235
2224
|
|
2236
2225
|
def insert_columns(
|
2237
2226
|
self,
|
2238
|
-
columns: list[tuple[
|
2227
|
+
columns: list[tuple[Any] | list[Any]] | tuple[tuple[Any] | list[Any]] | int = 1,
|
2239
2228
|
idx: str | int | None = None,
|
2240
2229
|
widths: list[int] | tuple[int] | None = None,
|
2241
2230
|
headers: bool = False,
|
@@ -2759,10 +2748,10 @@ class Sheet(tk.Frame):
|
|
2759
2748
|
def dropdown(
|
2760
2749
|
self,
|
2761
2750
|
*key: CreateSpanTypes,
|
2762
|
-
values: list[
|
2751
|
+
values: list[Any] | None = None,
|
2763
2752
|
edit_data: bool = True,
|
2764
|
-
set_values: dict[tuple[int, int],
|
2765
|
-
set_value:
|
2753
|
+
set_values: dict[tuple[int, int], Any] | None = None,
|
2754
|
+
set_value: Any = None,
|
2766
2755
|
state: Literal["normal", "readonly", "disabled"] = "normal",
|
2767
2756
|
redraw: bool = True,
|
2768
2757
|
selection_function: Callable | None = None,
|
@@ -3008,7 +2997,7 @@ class Sheet(tk.Frame):
|
|
3008
2997
|
self,
|
3009
2998
|
*key: CreateSpanTypes,
|
3010
2999
|
formatter_options: dict | None = None,
|
3011
|
-
formatter_class:
|
3000
|
+
formatter_class: Any = None,
|
3012
3001
|
redraw: bool = True,
|
3013
3002
|
**kwargs,
|
3014
3003
|
) -> Span:
|
@@ -3969,7 +3958,7 @@ class Sheet(tk.Frame):
|
|
3969
3958
|
|
3970
3959
|
# Identifying Bound Event Mouse Position
|
3971
3960
|
|
3972
|
-
def identify_region(self, event:
|
3961
|
+
def identify_region(self, event: Any) -> Literal["table", "index", "header", "top left"]:
|
3973
3962
|
if event.widget == self.MT:
|
3974
3963
|
return "table"
|
3975
3964
|
elif event.widget == self.RI:
|
@@ -3981,7 +3970,7 @@ class Sheet(tk.Frame):
|
|
3981
3970
|
|
3982
3971
|
def identify_row(
|
3983
3972
|
self,
|
3984
|
-
event:
|
3973
|
+
event: Any,
|
3985
3974
|
exclude_index: bool = False,
|
3986
3975
|
allow_end: bool = True,
|
3987
3976
|
) -> int | None:
|
@@ -3998,7 +3987,7 @@ class Sheet(tk.Frame):
|
|
3998
3987
|
|
3999
3988
|
def identify_column(
|
4000
3989
|
self,
|
4001
|
-
event:
|
3990
|
+
event: Any,
|
4002
3991
|
exclude_header: bool = False,
|
4003
3992
|
allow_end: bool = True,
|
4004
3993
|
) -> int | None:
|
@@ -4015,7 +4004,7 @@ class Sheet(tk.Frame):
|
|
4015
4004
|
|
4016
4005
|
# Scroll Positions and Cell Visibility
|
4017
4006
|
|
4018
|
-
def sync_scroll(self, widget:
|
4007
|
+
def sync_scroll(self, widget: Any) -> Sheet:
|
4019
4008
|
if widget is self:
|
4020
4009
|
return self
|
4021
4010
|
self.MT.synced_scrolls.add(widget)
|
@@ -4023,7 +4012,7 @@ class Sheet(tk.Frame):
|
|
4023
4012
|
widget.MT.synced_scrolls.add(self)
|
4024
4013
|
return self
|
4025
4014
|
|
4026
|
-
def unsync_scroll(self, widget:
|
4015
|
+
def unsync_scroll(self, widget: Any = None) -> Sheet:
|
4027
4016
|
if widget is None:
|
4028
4017
|
for widget in self.MT.synced_scrolls:
|
4029
4018
|
if isinstance(widget, Sheet):
|
@@ -4499,13 +4488,13 @@ class Sheet(tk.Frame):
|
|
4499
4488
|
self.CH.text_editor.window.set_text(text)
|
4500
4489
|
return self
|
4501
4490
|
|
4502
|
-
def destroy_text_editor(self, event:
|
4491
|
+
def destroy_text_editor(self, event: Any = None) -> Sheet:
|
4503
4492
|
self.MT.hide_text_editor(reason=event)
|
4504
4493
|
self.RI.hide_text_editor(reason=event)
|
4505
4494
|
self.CH.hide_text_editor(reason=event)
|
4506
4495
|
return self
|
4507
4496
|
|
4508
|
-
def get_text_editor_widget(self, event:
|
4497
|
+
def get_text_editor_widget(self, event: Any = None) -> tk.Text | None:
|
4509
4498
|
try:
|
4510
4499
|
return self.MT.text_editor.tktext
|
4511
4500
|
except Exception:
|
@@ -4639,7 +4628,7 @@ class Sheet(tk.Frame):
|
|
4639
4628
|
|
4640
4629
|
def event_widget_is_sheet(
|
4641
4630
|
self,
|
4642
|
-
event:
|
4631
|
+
event: Any,
|
4643
4632
|
table: bool = True,
|
4644
4633
|
index: bool = True,
|
4645
4634
|
header: bool = True,
|
@@ -4993,7 +4982,7 @@ class Sheet(tk.Frame):
|
|
4993
4982
|
|
4994
4983
|
def tree_build(
|
4995
4984
|
self,
|
4996
|
-
data: list[list[
|
4985
|
+
data: list[list[Any]],
|
4997
4986
|
iid_column: int,
|
4998
4987
|
parent_column: int,
|
4999
4988
|
text_column: None | int | list[str] = None,
|
@@ -5121,7 +5110,7 @@ class Sheet(tk.Frame):
|
|
5121
5110
|
index: None | int | Literal["end"] = None,
|
5122
5111
|
iid: None | str = None,
|
5123
5112
|
text: None | str = None,
|
5124
|
-
values: None | list[
|
5113
|
+
values: None | list[Any] = None,
|
5125
5114
|
create_selections: bool = False,
|
5126
5115
|
undo: bool = True,
|
5127
5116
|
) -> str:
|
@@ -5180,7 +5169,7 @@ class Sheet(tk.Frame):
|
|
5180
5169
|
|
5181
5170
|
def bulk_insert(
|
5182
5171
|
self,
|
5183
|
-
data: list[list[
|
5172
|
+
data: list[list[Any]],
|
5184
5173
|
parent: str = "",
|
5185
5174
|
index: None | int | Literal["end"] = None,
|
5186
5175
|
iid_column: int | None = None,
|
@@ -5659,7 +5648,7 @@ class Sheet(tk.Frame):
|
|
5659
5648
|
|
5660
5649
|
# ########## OLD FUNCTIONS ##########
|
5661
5650
|
|
5662
|
-
def get_cell_data(self, r: int, c: int, get_displayed: bool = False) ->
|
5651
|
+
def get_cell_data(self, r: int, c: int, get_displayed: bool = False) -> Any:
|
5663
5652
|
return self.MT.get_cell_data(r, c, get_displayed)
|
5664
5653
|
|
5665
5654
|
def get_row_data(
|
@@ -5669,7 +5658,7 @@ class Sheet(tk.Frame):
|
|
5669
5658
|
get_index: bool = False,
|
5670
5659
|
get_index_displayed: bool = True,
|
5671
5660
|
only_columns: int | AnyIter[int] | None = None,
|
5672
|
-
) -> list[
|
5661
|
+
) -> list[Any]:
|
5673
5662
|
if only_columns is not None:
|
5674
5663
|
if isinstance(only_columns, int):
|
5675
5664
|
only_columns = (only_columns,)
|
@@ -5695,7 +5684,7 @@ class Sheet(tk.Frame):
|
|
5695
5684
|
get_header: bool = False,
|
5696
5685
|
get_header_displayed: bool = True,
|
5697
5686
|
only_rows: int | AnyIter[int] | None = None,
|
5698
|
-
) -> list[
|
5687
|
+
) -> list[Any]:
|
5699
5688
|
if only_rows is not None:
|
5700
5689
|
if isinstance(only_rows, int):
|
5701
5690
|
only_rows = (only_rows,)
|
@@ -5715,7 +5704,7 @@ class Sheet(tk.Frame):
|
|
5715
5704
|
get_index_displayed: bool = True,
|
5716
5705
|
only_rows: AnyIter[int] | int | None = None,
|
5717
5706
|
only_columns: AnyIter[int] | int | None = None,
|
5718
|
-
) -> list[
|
5707
|
+
) -> list[Any]:
|
5719
5708
|
if only_rows is not None:
|
5720
5709
|
if isinstance(only_rows, int):
|
5721
5710
|
only_rows = (only_rows,)
|
@@ -5764,7 +5753,7 @@ class Sheet(tk.Frame):
|
|
5764
5753
|
get_header_displayed: bool = True,
|
5765
5754
|
only_rows: int | AnyIter[int] | None = None,
|
5766
5755
|
only_columns: int | AnyIter[int] | None = None,
|
5767
|
-
) -> Iterator[list[
|
5756
|
+
) -> Iterator[list[Any]]:
|
5768
5757
|
if only_rows is not None:
|
5769
5758
|
if isinstance(only_rows, int):
|
5770
5759
|
only_rows = (only_rows,)
|
@@ -5804,7 +5793,7 @@ class Sheet(tk.Frame):
|
|
5804
5793
|
reset_col_positions: bool = True,
|
5805
5794
|
reset_row_positions: bool = True,
|
5806
5795
|
redraw: bool = True,
|
5807
|
-
) ->
|
5796
|
+
) -> Any:
|
5808
5797
|
self.set_refresh_timer(redraw)
|
5809
5798
|
return self.MT.data_reference(newdataref, reset_col_positions, reset_row_positions)
|
5810
5799
|
|
@@ -5812,7 +5801,7 @@ class Sheet(tk.Frame):
|
|
5812
5801
|
self,
|
5813
5802
|
r: int,
|
5814
5803
|
c: int,
|
5815
|
-
value:
|
5804
|
+
value: Any = "",
|
5816
5805
|
redraw: bool = True,
|
5817
5806
|
keep_formatting: bool = True,
|
5818
5807
|
) -> Sheet:
|
@@ -5824,7 +5813,7 @@ class Sheet(tk.Frame):
|
|
5824
5813
|
def set_row_data(
|
5825
5814
|
self,
|
5826
5815
|
r: int,
|
5827
|
-
values: Sequence[
|
5816
|
+
values: Sequence[Any] = [],
|
5828
5817
|
add_columns: bool = True,
|
5829
5818
|
redraw: bool = True,
|
5830
5819
|
keep_formatting: bool = True,
|
@@ -5856,7 +5845,7 @@ class Sheet(tk.Frame):
|
|
5856
5845
|
def set_column_data(
|
5857
5846
|
self,
|
5858
5847
|
c: int,
|
5859
|
-
values: Sequence[
|
5848
|
+
values: Sequence[Any] = [],
|
5860
5849
|
add_rows: bool = True,
|
5861
5850
|
redraw: bool = True,
|
5862
5851
|
keep_formatting: bool = True,
|
@@ -6577,7 +6566,7 @@ class Sheet(tk.Frame):
|
|
6577
6566
|
self._create_dropdown(r, c, v, d)
|
6578
6567
|
return self.set_refresh_timer(kwargs["redraw"])
|
6579
6568
|
|
6580
|
-
def _create_dropdown(self, r: int, c: int, v:
|
6569
|
+
def _create_dropdown(self, r: int, c: int, v: Any, d: dict) -> None:
|
6581
6570
|
self.del_cell_options_dropdown_and_checkbox(r, c)
|
6582
6571
|
add_to_options(self.MT.cell_options, (r, c), "dropdown", d)
|
6583
6572
|
self.MT.set_cell_data(r, c, v)
|
@@ -6610,7 +6599,7 @@ class Sheet(tk.Frame):
|
|
6610
6599
|
self._dropdown_row(r_, v, d)
|
6611
6600
|
return self.set_refresh_timer(kwargs["redraw"])
|
6612
6601
|
|
6613
|
-
def _dropdown_row(self, r: int, v:
|
6602
|
+
def _dropdown_row(self, r: int, v: Any, d: dict) -> None:
|
6614
6603
|
self.del_row_options_dropdown_and_checkbox(r)
|
6615
6604
|
add_to_options(self.MT.row_options, r, "dropdown", d)
|
6616
6605
|
for c in range(self.MT.total_data_cols()):
|
@@ -6635,7 +6624,7 @@ class Sheet(tk.Frame):
|
|
6635
6624
|
self._dropdown_column(c_, v, d)
|
6636
6625
|
return self.set_refresh_timer(kwargs["redraw"])
|
6637
6626
|
|
6638
|
-
def _dropdown_column(self, c: int, v:
|
6627
|
+
def _dropdown_column(self, c: int, v: Any, d: dict) -> None:
|
6639
6628
|
self.del_column_options_dropdown_and_checkbox(c)
|
6640
6629
|
add_to_options(self.MT.col_options, c, "dropdown", d)
|
6641
6630
|
for r in range(self.MT.total_data_rows()):
|
@@ -6660,7 +6649,7 @@ class Sheet(tk.Frame):
|
|
6660
6649
|
self._create_header_dropdown(c_, v, d)
|
6661
6650
|
return self.set_refresh_timer(kwargs["redraw"])
|
6662
6651
|
|
6663
|
-
def _create_header_dropdown(self, c: int, v:
|
6652
|
+
def _create_header_dropdown(self, c: int, v: Any, d: dict) -> None:
|
6664
6653
|
self.del_header_cell_options_dropdown_and_checkbox(c)
|
6665
6654
|
add_to_options(self.CH.cell_options, c, "dropdown", d)
|
6666
6655
|
self.CH.set_cell_data(c, v)
|
@@ -6684,7 +6673,7 @@ class Sheet(tk.Frame):
|
|
6684
6673
|
self._create_index_dropdown(r_, v, d)
|
6685
6674
|
return self.set_refresh_timer(kwargs["redraw"])
|
6686
6675
|
|
6687
|
-
def _create_index_dropdown(self, r: int, v:
|
6676
|
+
def _create_index_dropdown(self, r: int, v: Any, d: dict) -> None:
|
6688
6677
|
self.del_index_cell_options_dropdown_and_checkbox(r)
|
6689
6678
|
add_to_options(self.RI.cell_options, r, "dropdown", d)
|
6690
6679
|
self.RI.set_cell_data(r, v)
|
@@ -6793,8 +6782,8 @@ class Sheet(tk.Frame):
|
|
6793
6782
|
r: int = 0,
|
6794
6783
|
c: int = 0,
|
6795
6784
|
set_existing_dropdown: bool = False,
|
6796
|
-
values: list[
|
6797
|
-
set_value:
|
6785
|
+
values: list[Any] | None = None,
|
6786
|
+
set_value: Any = None,
|
6798
6787
|
) -> Sheet:
|
6799
6788
|
if values is None:
|
6800
6789
|
values = []
|
@@ -6820,8 +6809,8 @@ class Sheet(tk.Frame):
|
|
6820
6809
|
self,
|
6821
6810
|
c: int = 0,
|
6822
6811
|
set_existing_dropdown: bool = False,
|
6823
|
-
values: list[
|
6824
|
-
set_value:
|
6812
|
+
values: list[Any] | None = None,
|
6813
|
+
set_value: Any = None,
|
6825
6814
|
) -> Sheet:
|
6826
6815
|
if values is None:
|
6827
6816
|
values = []
|
@@ -6846,8 +6835,8 @@ class Sheet(tk.Frame):
|
|
6846
6835
|
self,
|
6847
6836
|
r: int = 0,
|
6848
6837
|
set_existing_dropdown: bool = False,
|
6849
|
-
values: list[
|
6850
|
-
set_value:
|
6838
|
+
values: list[Any] | None = None,
|
6839
|
+
set_value: Any = None,
|
6851
6840
|
) -> Sheet:
|
6852
6841
|
if values is None:
|
6853
6842
|
values = []
|
@@ -6923,15 +6912,15 @@ class Sheet(tk.Frame):
|
|
6923
6912
|
kwargs["modified_function"] = modified_function
|
6924
6913
|
return kwargs
|
6925
6914
|
|
6926
|
-
def get_dropdown_value(self, r: int = 0, c: int = 0) ->
|
6915
|
+
def get_dropdown_value(self, r: int = 0, c: int = 0) -> Any:
|
6927
6916
|
if self.MT.get_cell_kwargs(r, c, key="dropdown"):
|
6928
6917
|
return self.get_cell_data(r, c)
|
6929
6918
|
|
6930
|
-
def get_header_dropdown_value(self, c: int = 0) ->
|
6919
|
+
def get_header_dropdown_value(self, c: int = 0) -> Any:
|
6931
6920
|
if self.CH.get_cell_kwargs(c, key="dropdown"):
|
6932
6921
|
return self.MT._headers[c]
|
6933
6922
|
|
6934
|
-
def get_index_dropdown_value(self, r: int = 0) ->
|
6923
|
+
def get_index_dropdown_value(self, r: int = 0) -> Any:
|
6935
6924
|
if self.RI.get_cell_kwargs(r, key="dropdown"):
|
6936
6925
|
return self.MT._row_index[r]
|
6937
6926
|
|
@@ -6940,7 +6929,7 @@ class Sheet(tk.Frame):
|
|
6940
6929
|
r: int | Literal["all"],
|
6941
6930
|
c: int | Literal["all"],
|
6942
6931
|
formatter_options: dict | None = None,
|
6943
|
-
formatter_class:
|
6932
|
+
formatter_class: Any = None,
|
6944
6933
|
redraw: bool = True,
|
6945
6934
|
**kwargs,
|
6946
6935
|
) -> Sheet:
|
@@ -6993,7 +6982,7 @@ class Sheet(tk.Frame):
|
|
6993
6982
|
self,
|
6994
6983
|
r: AnyIter[int] | int | Literal["all"],
|
6995
6984
|
formatter_options: dict | None = None,
|
6996
|
-
formatter_class:
|
6985
|
+
formatter_class: Any = None,
|
6997
6986
|
redraw: bool = True,
|
6998
6987
|
**kwargs,
|
6999
6988
|
) -> Sheet:
|
@@ -7037,7 +7026,7 @@ class Sheet(tk.Frame):
|
|
7037
7026
|
self,
|
7038
7027
|
c: AnyIter[int] | int | Literal["all"],
|
7039
7028
|
formatter_options: dict | None = None,
|
7040
|
-
formatter_class:
|
7029
|
+
formatter_class: Any = None,
|
7041
7030
|
redraw: bool = True,
|
7042
7031
|
**kwargs,
|
7043
7032
|
) -> Sheet:
|
@@ -7094,7 +7083,7 @@ class Dropdown(Sheet):
|
|
7094
7083
|
height: int | None = None,
|
7095
7084
|
font: None | tuple[str, int, str] = None,
|
7096
7085
|
outline_thickness: int = 2,
|
7097
|
-
values: list[
|
7086
|
+
values: list[Any] | None = None,
|
7098
7087
|
close_dropdown_window: Callable | None = None,
|
7099
7088
|
search_function: Callable = dropdown_search_function,
|
7100
7089
|
modified_function: None | Callable = None,
|
@@ -7171,7 +7160,7 @@ class Dropdown(Sheet):
|
|
7171
7160
|
ops: DotDict,
|
7172
7161
|
outline_color: str,
|
7173
7162
|
align: str,
|
7174
|
-
values: list[
|
7163
|
+
values: list[Any] | None = None,
|
7175
7164
|
search_function: Callable = dropdown_search_function,
|
7176
7165
|
modified_function: None | Callable = None,
|
7177
7166
|
) -> None:
|
@@ -7201,7 +7190,7 @@ class Dropdown(Sheet):
|
|
7201
7190
|
)
|
7202
7191
|
self.values(values, width=width - self.yscroll.winfo_width() - 4)
|
7203
7192
|
|
7204
|
-
def arrowkey_UP(self, event:
|
7193
|
+
def arrowkey_UP(self, event: Any = None) -> None:
|
7205
7194
|
if self.row > 0:
|
7206
7195
|
self.row -= 1
|
7207
7196
|
else:
|
@@ -7209,13 +7198,13 @@ class Dropdown(Sheet):
|
|
7209
7198
|
self.see(self.row, 0, redraw=False)
|
7210
7199
|
self.select_row(self.row)
|
7211
7200
|
|
7212
|
-
def arrowkey_DOWN(self, event:
|
7201
|
+
def arrowkey_DOWN(self, event: Any = None) -> None:
|
7213
7202
|
if len(self.MT.data) - 1 > self.row:
|
7214
7203
|
self.row += 1
|
7215
7204
|
self.see(self.row, 0, redraw=False)
|
7216
7205
|
self.select_row(self.row)
|
7217
7206
|
|
7218
|
-
def search_and_see(self, event:
|
7207
|
+
def search_and_see(self, event: Any = None) -> str:
|
7219
7208
|
if self.search_function is not None:
|
7220
7209
|
rn = self.search_function(search_for=rf"{event['value']}", data=(r[0] for r in self.MT.data))
|
7221
7210
|
if isinstance(rn, int):
|
@@ -7224,7 +7213,7 @@ class Dropdown(Sheet):
|
|
7224
7213
|
self.select_row(self.row)
|
7225
7214
|
return self.MT.data[rn][0]
|
7226
7215
|
|
7227
|
-
def mouse_motion(self, event:
|
7216
|
+
def mouse_motion(self, event: Any) -> None:
|
7228
7217
|
row = self.identify_row(event, exclude_index=True, allow_end=False)
|
7229
7218
|
if row is not None and row != self.row:
|
7230
7219
|
self.row = row
|
@@ -7235,7 +7224,7 @@ class Dropdown(Sheet):
|
|
7235
7224
|
if rows:
|
7236
7225
|
self.select_row(next(iter(rows)))
|
7237
7226
|
|
7238
|
-
def b1(self, event:
|
7227
|
+
def b1(self, event: Any = None) -> None:
|
7239
7228
|
if event is None:
|
7240
7229
|
row = None
|
7241
7230
|
elif event.keysym == "Return":
|
@@ -7266,7 +7255,7 @@ class Dropdown(Sheet):
|
|
7266
7255
|
|
7267
7256
|
def values(
|
7268
7257
|
self,
|
7269
|
-
values: list[
|
7258
|
+
values: list[Any] | None = None,
|
7270
7259
|
redraw: bool = True,
|
7271
7260
|
width: int | None = None,
|
7272
7261
|
) -> None:
|