tksheet 7.3.0__py3-none-any.whl → 7.3.2__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 +2 -2
- tksheet/column_headers.py +41 -40
- tksheet/find_window.py +251 -0
- tksheet/formatters.py +1 -1
- tksheet/functions.py +80 -50
- tksheet/main_table.py +531 -286
- tksheet/other_classes.py +6 -9
- tksheet/row_index.py +43 -40
- tksheet/sheet.py +165 -75
- tksheet/sheet_options.py +30 -1
- tksheet/text_editor.py +1 -1
- tksheet/top_left_rectangle.py +1 -1
- tksheet/types.py +8 -0
- {tksheet-7.3.0.dist-info → tksheet-7.3.2.dist-info}/METADATA +10 -11
- tksheet-7.3.2.dist-info/RECORD +21 -0
- {tksheet-7.3.0.dist-info → tksheet-7.3.2.dist-info}/WHEEL +1 -1
- tksheet-7.3.0.dist-info/RECORD +0 -20
- /tksheet/{vars.py → constants.py} +0 -0
- {tksheet-7.3.0.dist-info → tksheet-7.3.2.dist-info}/LICENSE.txt +0 -0
- {tksheet-7.3.0.dist-info → tksheet-7.3.2.dist-info}/top_level.txt +0 -0
tksheet/sheet.py
CHANGED
@@ -83,9 +83,10 @@ from .themes import (
|
|
83
83
|
)
|
84
84
|
from .top_left_rectangle import TopLeftRectangle
|
85
85
|
from .types import (
|
86
|
+
AnyIter,
|
86
87
|
CreateSpanTypes,
|
87
88
|
)
|
88
|
-
from .
|
89
|
+
from .constants import (
|
89
90
|
USER_OS,
|
90
91
|
backwards_compatibility_keys,
|
91
92
|
emitted_events,
|
@@ -309,6 +310,7 @@ class Sheet(tk.Frame):
|
|
309
310
|
highlightbackground=outline_color,
|
310
311
|
highlightcolor=outline_color,
|
311
312
|
)
|
313
|
+
self._startup_complete = False
|
312
314
|
self.ops = new_sheet_options()
|
313
315
|
if column_width is not None:
|
314
316
|
default_column_width = column_width
|
@@ -508,10 +510,14 @@ class Sheet(tk.Frame):
|
|
508
510
|
self.see(0, startup_select[0])
|
509
511
|
except Exception:
|
510
512
|
pass
|
511
|
-
|
512
513
|
self.refresh()
|
513
514
|
if startup_focus:
|
514
515
|
self.MT.focus_set()
|
516
|
+
self.after_idle(self.startup_complete)
|
517
|
+
|
518
|
+
def startup_complete(self, _mod: bool = True) -> bool:
|
519
|
+
self._startup_complete = _mod
|
520
|
+
return self._startup_complete
|
515
521
|
|
516
522
|
# Sheet Colors
|
517
523
|
|
@@ -544,7 +550,7 @@ class Sheet(tk.Frame):
|
|
544
550
|
def set_header_data(
|
545
551
|
self,
|
546
552
|
value: object,
|
547
|
-
c: int | None |
|
553
|
+
c: int | None | AnyIter[int] = None,
|
548
554
|
redraw: bool = True,
|
549
555
|
) -> Sheet:
|
550
556
|
if c is None:
|
@@ -580,7 +586,7 @@ class Sheet(tk.Frame):
|
|
580
586
|
def set_index_data(
|
581
587
|
self,
|
582
588
|
value: object,
|
583
|
-
r: int | None |
|
589
|
+
r: int | None | AnyIter[int] = None,
|
584
590
|
redraw: bool = True,
|
585
591
|
) -> Sheet:
|
586
592
|
if r is None:
|
@@ -652,6 +658,7 @@ class Sheet(tk.Frame):
|
|
652
658
|
- "paste"
|
653
659
|
- "delete"
|
654
660
|
- "undo"
|
661
|
+
- "find"
|
655
662
|
- "edit_cell"
|
656
663
|
- "edit_header"
|
657
664
|
- "edit_index"
|
@@ -660,6 +667,47 @@ class Sheet(tk.Frame):
|
|
660
667
|
return self
|
661
668
|
|
662
669
|
def disable_bindings(self, *bindings: str) -> Sheet:
|
670
|
+
"""
|
671
|
+
List of available bindings:
|
672
|
+
- "all"
|
673
|
+
- "single_select"
|
674
|
+
- "toggle_select"
|
675
|
+
- "drag_select"
|
676
|
+
- "select_all"
|
677
|
+
- "column_drag_and_drop" / "move_columns"
|
678
|
+
- "row_drag_and_drop" / "move_rows"
|
679
|
+
- "column_select"
|
680
|
+
- "row_select"
|
681
|
+
- "column_width_resize"
|
682
|
+
- "double_click_column_resize"
|
683
|
+
- "row_width_resize"
|
684
|
+
- "column_height_resize"
|
685
|
+
- "arrowkeys" # all arrowkeys including page up and down
|
686
|
+
- "up"
|
687
|
+
- "down"
|
688
|
+
- "left"
|
689
|
+
- "right"
|
690
|
+
- "prior" # page up
|
691
|
+
- "next" # page down
|
692
|
+
- "row_height_resize"
|
693
|
+
- "double_click_row_resize"
|
694
|
+
- "right_click_popup_menu" / "rc_popup_menu" / "rc_menu"
|
695
|
+
- "rc_select"
|
696
|
+
- "rc_insert_column"
|
697
|
+
- "rc_delete_column"
|
698
|
+
- "rc_insert_row"
|
699
|
+
- "rc_delete_row"
|
700
|
+
- "ctrl_click_select" / "ctrl_select"
|
701
|
+
- "copy"
|
702
|
+
- "cut"
|
703
|
+
- "paste"
|
704
|
+
- "delete"
|
705
|
+
- "undo"
|
706
|
+
- "find"
|
707
|
+
- "edit_cell"
|
708
|
+
- "edit_header"
|
709
|
+
- "edit_index"
|
710
|
+
"""
|
663
711
|
self.MT.disable_bindings(bindings)
|
664
712
|
return self
|
665
713
|
|
@@ -715,7 +763,7 @@ class Sheet(tk.Frame):
|
|
715
763
|
- "ctrl_column_select"
|
716
764
|
- "deselect"
|
717
765
|
- "all_select_events", "select", "selectevents", "select_events"
|
718
|
-
- "all_modified_events", "sheetmodified", "sheet_modified" "modified_events", "modified"
|
766
|
+
- "all_modified_events", "sheetmodified", "sheet_modified", "modified_events", "modified"
|
719
767
|
- "bind_all"
|
720
768
|
- "unbind_all"
|
721
769
|
"""
|
@@ -792,7 +840,8 @@ class Sheet(tk.Frame):
|
|
792
840
|
"unbind_all",
|
793
841
|
"all_modified_events",
|
794
842
|
"sheetmodified",
|
795
|
-
"sheet_modified"
|
843
|
+
"sheet_modified",
|
844
|
+
"modified_events",
|
796
845
|
"modified",
|
797
846
|
):
|
798
847
|
self.MT.extra_end_ctrl_c_func = f
|
@@ -2305,7 +2354,7 @@ class Sheet(tk.Frame):
|
|
2305
2354
|
|
2306
2355
|
def del_rows(
|
2307
2356
|
self,
|
2308
|
-
rows: int |
|
2357
|
+
rows: int | AnyIter[int],
|
2309
2358
|
data_indexes: bool = True,
|
2310
2359
|
undo: bool = False,
|
2311
2360
|
emit_event: bool = False,
|
@@ -2347,7 +2396,7 @@ class Sheet(tk.Frame):
|
|
2347
2396
|
|
2348
2397
|
def del_columns(
|
2349
2398
|
self,
|
2350
|
-
columns: int |
|
2399
|
+
columns: int | AnyIter[int],
|
2351
2400
|
data_indexes: bool = True,
|
2352
2401
|
undo: bool = False,
|
2353
2402
|
emit_event: bool = False,
|
@@ -3182,22 +3231,25 @@ class Sheet(tk.Frame):
|
|
3182
3231
|
get_columns: bool = False,
|
3183
3232
|
sort_by_row: bool = False,
|
3184
3233
|
sort_by_column: bool = False,
|
3234
|
+
reverse: bool = False,
|
3185
3235
|
) -> list[tuple[int, int]] | set[tuple[int, int]]:
|
3186
3236
|
if sort_by_row and sort_by_column:
|
3187
|
-
|
3237
|
+
return sorted(
|
3188
3238
|
self.MT.get_selected_cells(get_rows=get_rows, get_cols=get_columns),
|
3189
|
-
key=lambda t: t
|
3239
|
+
key=lambda t: t,
|
3240
|
+
reverse=reverse,
|
3190
3241
|
)
|
3191
|
-
return sorted(sels, key=lambda t: t[0])
|
3192
3242
|
elif sort_by_row:
|
3193
3243
|
return sorted(
|
3194
3244
|
self.MT.get_selected_cells(get_rows=get_rows, get_cols=get_columns),
|
3195
3245
|
key=lambda t: t[0],
|
3246
|
+
reverse=reverse,
|
3196
3247
|
)
|
3197
3248
|
elif sort_by_column:
|
3198
3249
|
return sorted(
|
3199
3250
|
self.MT.get_selected_cells(get_rows=get_rows, get_cols=get_columns),
|
3200
3251
|
key=lambda t: t[1],
|
3252
|
+
reverse=reverse,
|
3201
3253
|
)
|
3202
3254
|
return self.MT.get_selected_cells(get_rows=get_rows, get_cols=get_columns)
|
3203
3255
|
|
@@ -3251,13 +3303,13 @@ class Sheet(tk.Frame):
|
|
3251
3303
|
exclude_rows: bool = False,
|
3252
3304
|
exclude_cells: bool = False,
|
3253
3305
|
) -> bool:
|
3254
|
-
|
3255
|
-
|
3256
|
-
|
3257
|
-
|
3258
|
-
|
3259
|
-
|
3260
|
-
|
3306
|
+
return bool(
|
3307
|
+
self.MT.anything_selected(
|
3308
|
+
exclude_columns=exclude_columns,
|
3309
|
+
exclude_rows=exclude_rows,
|
3310
|
+
exclude_cells=exclude_cells,
|
3311
|
+
)
|
3312
|
+
)
|
3261
3313
|
|
3262
3314
|
def all_selected(self) -> bool:
|
3263
3315
|
return self.MT.all_selected()
|
@@ -3463,8 +3515,8 @@ class Sheet(tk.Frame):
|
|
3463
3515
|
|
3464
3516
|
def deselect_any(
|
3465
3517
|
self,
|
3466
|
-
rows:
|
3467
|
-
columns:
|
3518
|
+
rows: AnyIter[int] | int | None,
|
3519
|
+
columns: AnyIter[int] | int | None,
|
3468
3520
|
redraw: bool = True,
|
3469
3521
|
) -> Sheet:
|
3470
3522
|
self.MT.deselect_any(rows=rows, columns=columns, redraw=False)
|
@@ -3622,7 +3674,7 @@ class Sheet(tk.Frame):
|
|
3622
3674
|
|
3623
3675
|
def set_column_widths(
|
3624
3676
|
self,
|
3625
|
-
column_widths:
|
3677
|
+
column_widths: AnyIter[float] | None = None,
|
3626
3678
|
canvas_positions: bool = False,
|
3627
3679
|
reset: bool = False,
|
3628
3680
|
) -> Sheet:
|
@@ -3637,7 +3689,7 @@ class Sheet(tk.Frame):
|
|
3637
3689
|
|
3638
3690
|
def set_row_heights(
|
3639
3691
|
self,
|
3640
|
-
row_heights:
|
3692
|
+
row_heights: AnyIter[float] | None = None,
|
3641
3693
|
canvas_positions: bool = False,
|
3642
3694
|
reset: bool = False,
|
3643
3695
|
) -> Sheet:
|
@@ -3684,7 +3736,7 @@ class Sheet(tk.Frame):
|
|
3684
3736
|
|
3685
3737
|
delete_row_position = del_row_position
|
3686
3738
|
|
3687
|
-
def del_row_positions(self, idxs:
|
3739
|
+
def del_row_positions(self, idxs: AnyIter[int] | None = None) -> Sheet:
|
3688
3740
|
self.MT.del_row_positions(idxs=idxs)
|
3689
3741
|
self.set_refresh_timer()
|
3690
3742
|
return self
|
@@ -3695,7 +3747,7 @@ class Sheet(tk.Frame):
|
|
3695
3747
|
|
3696
3748
|
delete_column_position = del_column_position
|
3697
3749
|
|
3698
|
-
def del_column_positions(self, idxs:
|
3750
|
+
def del_column_positions(self, idxs: AnyIter[int] | None = None) -> Sheet:
|
3699
3751
|
self.MT.del_col_positions(idxs=idxs)
|
3700
3752
|
self.set_refresh_timer()
|
3701
3753
|
return self
|
@@ -3968,7 +4020,7 @@ class Sheet(tk.Frame):
|
|
3968
4020
|
|
3969
4021
|
def display_columns(
|
3970
4022
|
self,
|
3971
|
-
columns: None | Literal["all"] |
|
4023
|
+
columns: None | Literal["all"] | AnyIter[int] = None,
|
3972
4024
|
all_columns_displayed: None | bool = None,
|
3973
4025
|
reset_col_positions: bool = True,
|
3974
4026
|
redraw: bool = False,
|
@@ -3992,7 +4044,7 @@ class Sheet(tk.Frame):
|
|
3992
4044
|
|
3993
4045
|
def hide_columns(
|
3994
4046
|
self,
|
3995
|
-
columns: int | set[int] |
|
4047
|
+
columns: int | set[int] | AnyIter[int],
|
3996
4048
|
redraw: bool = True,
|
3997
4049
|
deselect_all: bool = True,
|
3998
4050
|
data_indexes: bool = False,
|
@@ -4036,7 +4088,7 @@ class Sheet(tk.Frame):
|
|
4036
4088
|
|
4037
4089
|
def show_columns(
|
4038
4090
|
self,
|
4039
|
-
columns: int |
|
4091
|
+
columns: int | AnyIter[int],
|
4040
4092
|
redraw: bool = True,
|
4041
4093
|
deselect_all: bool = True,
|
4042
4094
|
) -> Sheet:
|
@@ -4102,7 +4154,7 @@ class Sheet(tk.Frame):
|
|
4102
4154
|
|
4103
4155
|
def display_rows(
|
4104
4156
|
self,
|
4105
|
-
rows: None | Literal["all"] |
|
4157
|
+
rows: None | Literal["all"] | AnyIter[int] = None,
|
4106
4158
|
all_rows_displayed: None | bool = None,
|
4107
4159
|
reset_row_positions: bool = True,
|
4108
4160
|
redraw: bool = False,
|
@@ -4124,7 +4176,7 @@ class Sheet(tk.Frame):
|
|
4124
4176
|
|
4125
4177
|
def hide_rows(
|
4126
4178
|
self,
|
4127
|
-
rows: int | set[int] |
|
4179
|
+
rows: int | set[int] | AnyIter[int],
|
4128
4180
|
redraw: bool = True,
|
4129
4181
|
deselect_all: bool = True,
|
4130
4182
|
data_indexes: bool = False,
|
@@ -4170,7 +4222,7 @@ class Sheet(tk.Frame):
|
|
4170
4222
|
|
4171
4223
|
def show_rows(
|
4172
4224
|
self,
|
4173
|
-
rows: int |
|
4225
|
+
rows: int | AnyIter[int],
|
4174
4226
|
redraw: bool = True,
|
4175
4227
|
deselect_all: bool = True,
|
4176
4228
|
) -> Sheet:
|
@@ -4790,7 +4842,7 @@ class Sheet(tk.Frame):
|
|
4790
4842
|
def tag(
|
4791
4843
|
self,
|
4792
4844
|
*key: CreateSpanTypes,
|
4793
|
-
tags:
|
4845
|
+
tags: AnyIter[str] | str = "",
|
4794
4846
|
) -> Sheet:
|
4795
4847
|
span = self.span_from_key(*key)
|
4796
4848
|
rows, cols = self.ranges_from_span(span)
|
@@ -4835,7 +4887,7 @@ class Sheet(tk.Frame):
|
|
4835
4887
|
|
4836
4888
|
def tag_rows(
|
4837
4889
|
self,
|
4838
|
-
rows: int |
|
4890
|
+
rows: int | AnyIter[int],
|
4839
4891
|
*tags,
|
4840
4892
|
) -> Sheet:
|
4841
4893
|
if isinstance(rows, int):
|
@@ -4848,7 +4900,7 @@ class Sheet(tk.Frame):
|
|
4848
4900
|
|
4849
4901
|
def tag_columns(
|
4850
4902
|
self,
|
4851
|
-
columns: int |
|
4903
|
+
columns: int | AnyIter[int],
|
4852
4904
|
*tags,
|
4853
4905
|
) -> Sheet:
|
4854
4906
|
if isinstance(columns, int):
|
@@ -4862,8 +4914,8 @@ class Sheet(tk.Frame):
|
|
4862
4914
|
def untag(
|
4863
4915
|
self,
|
4864
4916
|
cell: tuple[int, int] | None = None,
|
4865
|
-
rows: int |
|
4866
|
-
columns: int |
|
4917
|
+
rows: int | AnyIter[int] | None = None,
|
4918
|
+
columns: int | AnyIter[int] | None = None,
|
4867
4919
|
) -> Sheet:
|
4868
4920
|
if isinstance(cell, tuple):
|
4869
4921
|
for tagged in self.MT.tagged_cells.values():
|
@@ -4923,7 +4975,7 @@ class Sheet(tk.Frame):
|
|
4923
4975
|
text_column: None | int | list[str] = None,
|
4924
4976
|
push_ops: bool = False,
|
4925
4977
|
row_heights: Sequence[int] | None | False = None,
|
4926
|
-
open_ids:
|
4978
|
+
open_ids: AnyIter[str] | None = None,
|
4927
4979
|
safety: bool = True,
|
4928
4980
|
ncols: int | None = None,
|
4929
4981
|
lower: bool = False,
|
@@ -4950,7 +5002,7 @@ class Sheet(tk.Frame):
|
|
4950
5002
|
if not iid:
|
4951
5003
|
continue
|
4952
5004
|
tally_of_ids[iid] += 1
|
4953
|
-
if tally_of_ids[iid]
|
5005
|
+
if tally_of_ids[iid]:
|
4954
5006
|
x = 1
|
4955
5007
|
while iid in tally_of_ids:
|
4956
5008
|
new = f"{row[iid_column]}_DUPLICATED_{x}"
|
@@ -5032,7 +5084,7 @@ class Sheet(tk.Frame):
|
|
5032
5084
|
"""
|
5033
5085
|
return self.RI.tree_open_ids
|
5034
5086
|
|
5035
|
-
def tree_set_open(self, open_ids:
|
5087
|
+
def tree_set_open(self, open_ids: AnyIter[str]) -> Sheet:
|
5036
5088
|
"""
|
5037
5089
|
Accepts set[str] of iids that are open in the treeview
|
5038
5090
|
Closes everything else
|
@@ -5087,7 +5139,7 @@ class Sheet(tk.Frame):
|
|
5087
5139
|
deselect_all=False,
|
5088
5140
|
)
|
5089
5141
|
|
5090
|
-
def _tree_close(self, items:
|
5142
|
+
def _tree_close(self, items: AnyIter[str]) -> list[int]:
|
5091
5143
|
"""
|
5092
5144
|
Only meant for internal use
|
5093
5145
|
"""
|
@@ -5129,6 +5181,9 @@ class Sheet(tk.Frame):
|
|
5129
5181
|
) -> str:
|
5130
5182
|
"""
|
5131
5183
|
Insert an item into the treeview
|
5184
|
+
|
5185
|
+
Returns:
|
5186
|
+
str: new item iid
|
5132
5187
|
"""
|
5133
5188
|
if not iid:
|
5134
5189
|
i = 0
|
@@ -5187,7 +5242,12 @@ class Sheet(tk.Frame):
|
|
5187
5242
|
include_text_column: bool = True,
|
5188
5243
|
) -> dict[str, int]:
|
5189
5244
|
"""
|
5190
|
-
Insert multiple items into the treeview at once, under the same parent
|
5245
|
+
Insert multiple items into the treeview at once, under the same parent.
|
5246
|
+
|
5247
|
+
Returns:
|
5248
|
+
dict:
|
5249
|
+
- Keys (str): iid
|
5250
|
+
- Values (int): row numbers
|
5191
5251
|
"""
|
5192
5252
|
to_insert = []
|
5193
5253
|
pid = parent
|
@@ -5398,6 +5458,8 @@ class Sheet(tk.Frame):
|
|
5398
5458
|
to_show = []
|
5399
5459
|
item_node = self.RI.tree[item]
|
5400
5460
|
item_r = self.RI.tree_rns[item]
|
5461
|
+
item_descendants = tuple(self.RI.get_iid_descendants(item))
|
5462
|
+
num_item_descendants = len(item_descendants)
|
5401
5463
|
if parent:
|
5402
5464
|
if self.RI.move_pid_causes_recursive_loop(item, parent):
|
5403
5465
|
raise ValueError(f"iid '{item}' causes a recursive loop with parent '{parent}'.")
|
@@ -5410,7 +5472,7 @@ class Sheet(tk.Frame):
|
|
5410
5472
|
# index is on end
|
5411
5473
|
# item row is less than move to row
|
5412
5474
|
if item_r < new_r:
|
5413
|
-
r_ctr = new_r -
|
5475
|
+
r_ctr = new_r - num_item_descendants
|
5414
5476
|
|
5415
5477
|
# new parent has children
|
5416
5478
|
# index is on end
|
@@ -5427,10 +5489,10 @@ class Sheet(tk.Frame):
|
|
5427
5489
|
r_ctr = (
|
5428
5490
|
new_r
|
5429
5491
|
+ sum(1 for _ in self.RI.get_iid_descendants(parent_node.children[index].iid))
|
5430
|
-
-
|
5492
|
+
- num_item_descendants
|
5431
5493
|
)
|
5432
5494
|
else:
|
5433
|
-
r_ctr = new_r -
|
5495
|
+
r_ctr = new_r - num_item_descendants - 1
|
5434
5496
|
|
5435
5497
|
# new parent has children
|
5436
5498
|
# index is not end
|
@@ -5445,7 +5507,7 @@ class Sheet(tk.Frame):
|
|
5445
5507
|
# index always start
|
5446
5508
|
# item row is less than move to row
|
5447
5509
|
if item_r < new_r:
|
5448
|
-
r_ctr = new_r -
|
5510
|
+
r_ctr = new_r - num_item_descendants
|
5449
5511
|
|
5450
5512
|
# new parent doesn't have children
|
5451
5513
|
# index always start
|
@@ -5456,7 +5518,7 @@ class Sheet(tk.Frame):
|
|
5456
5518
|
if parent in self.RI.tree_open_ids and self.item_displayed(parent):
|
5457
5519
|
to_show.append(r_ctr)
|
5458
5520
|
r_ctr += 1
|
5459
|
-
for did in
|
5521
|
+
for did in item_descendants:
|
5460
5522
|
mapping[self.RI.tree_rns[did]] = r_ctr
|
5461
5523
|
if to_show and self.RI.ancestors_all_open(did, item_node.parent):
|
5462
5524
|
to_show.append(r_ctr)
|
@@ -5475,14 +5537,14 @@ class Sheet(tk.Frame):
|
|
5475
5537
|
r_ctr = (
|
5476
5538
|
new_r
|
5477
5539
|
+ sum(1 for _ in self.RI.get_iid_descendants(self.rowitem(new_r, data_index=True)))
|
5478
|
-
-
|
5540
|
+
- num_item_descendants
|
5479
5541
|
)
|
5480
5542
|
else:
|
5481
5543
|
r_ctr = new_r
|
5482
5544
|
mapping[item_r] = r_ctr
|
5483
5545
|
to_show.append(r_ctr)
|
5484
5546
|
r_ctr += 1
|
5485
|
-
for did in
|
5547
|
+
for did in item_descendants:
|
5486
5548
|
mapping[self.RI.tree_rns[did]] = r_ctr
|
5487
5549
|
if to_show and self.RI.ancestors_all_open(did, item_node.parent):
|
5488
5550
|
to_show.append(r_ctr)
|
@@ -5778,7 +5840,7 @@ class Sheet(tk.Frame):
|
|
5778
5840
|
get_displayed: bool = False,
|
5779
5841
|
get_index: bool = False,
|
5780
5842
|
get_index_displayed: bool = True,
|
5781
|
-
only_columns: int |
|
5843
|
+
only_columns: int | AnyIter[int] | None = None,
|
5782
5844
|
) -> list[object]:
|
5783
5845
|
if only_columns is not None:
|
5784
5846
|
if isinstance(only_columns, int):
|
@@ -5804,7 +5866,7 @@ class Sheet(tk.Frame):
|
|
5804
5866
|
get_displayed: bool = False,
|
5805
5867
|
get_header: bool = False,
|
5806
5868
|
get_header_displayed: bool = True,
|
5807
|
-
only_rows: int |
|
5869
|
+
only_rows: int | AnyIter[int] | None = None,
|
5808
5870
|
) -> list[object]:
|
5809
5871
|
if only_rows is not None:
|
5810
5872
|
if isinstance(only_rows, int):
|
@@ -5823,8 +5885,8 @@ class Sheet(tk.Frame):
|
|
5823
5885
|
get_index: bool = False,
|
5824
5886
|
get_header_displayed: bool = True,
|
5825
5887
|
get_index_displayed: bool = True,
|
5826
|
-
only_rows:
|
5827
|
-
only_columns:
|
5888
|
+
only_rows: AnyIter[int] | int | None = None,
|
5889
|
+
only_columns: AnyIter[int] | int | None = None,
|
5828
5890
|
) -> list[object]:
|
5829
5891
|
if only_rows is not None:
|
5830
5892
|
if isinstance(only_rows, int):
|
@@ -5872,8 +5934,8 @@ class Sheet(tk.Frame):
|
|
5872
5934
|
get_index: bool = False,
|
5873
5935
|
get_index_displayed: bool = True,
|
5874
5936
|
get_header_displayed: bool = True,
|
5875
|
-
only_rows: int |
|
5876
|
-
only_columns: int |
|
5937
|
+
only_rows: int | AnyIter[int] | None = None,
|
5938
|
+
only_columns: int | AnyIter[int] | None = None,
|
5877
5939
|
) -> Iterator[list[object]]:
|
5878
5940
|
if only_rows is not None:
|
5879
5941
|
if isinstance(only_rows, int):
|
@@ -6142,7 +6204,7 @@ class Sheet(tk.Frame):
|
|
6142
6204
|
|
6143
6205
|
def highlight_rows(
|
6144
6206
|
self,
|
6145
|
-
rows:
|
6207
|
+
rows: AnyIter[int] | int,
|
6146
6208
|
bg: None | str = None,
|
6147
6209
|
fg: None | str = None,
|
6148
6210
|
highlight_index: bool = True,
|
@@ -6160,7 +6222,7 @@ class Sheet(tk.Frame):
|
|
6160
6222
|
|
6161
6223
|
def highlight_columns(
|
6162
6224
|
self,
|
6163
|
-
columns:
|
6225
|
+
columns: AnyIter[int] | int,
|
6164
6226
|
bg: bool | None | str = False,
|
6165
6227
|
fg: bool | None | str = False,
|
6166
6228
|
highlight_header: bool = True,
|
@@ -6460,7 +6522,12 @@ class Sheet(tk.Frame):
|
|
6460
6522
|
) -> None:
|
6461
6523
|
self.create_checkbox(r=r, c=c, **get_checkbox_kwargs(*args, **kwargs))
|
6462
6524
|
|
6463
|
-
def checkbox_row(
|
6525
|
+
def checkbox_row(
|
6526
|
+
self,
|
6527
|
+
r: AnyIter[int] | int | Literal["all"] = 0,
|
6528
|
+
*args,
|
6529
|
+
**kwargs,
|
6530
|
+
) -> None:
|
6464
6531
|
kwargs = get_checkbox_kwargs(*args, **kwargs)
|
6465
6532
|
d = get_checkbox_dict(**kwargs)
|
6466
6533
|
if isinstance(r, str) and r.lower() == "all":
|
@@ -6482,7 +6549,7 @@ class Sheet(tk.Frame):
|
|
6482
6549
|
|
6483
6550
|
def checkbox_column(
|
6484
6551
|
self,
|
6485
|
-
c:
|
6552
|
+
c: AnyIter[int] | int | Literal["all"] = 0,
|
6486
6553
|
*args,
|
6487
6554
|
**kwargs,
|
6488
6555
|
) -> None:
|
@@ -6505,7 +6572,12 @@ class Sheet(tk.Frame):
|
|
6505
6572
|
for r in range(self.MT.total_data_rows()):
|
6506
6573
|
self.MT.set_cell_data(r, c, v)
|
6507
6574
|
|
6508
|
-
def create_header_checkbox(
|
6575
|
+
def create_header_checkbox(
|
6576
|
+
self,
|
6577
|
+
c: AnyIter[int] | int | Literal["all"] = 0,
|
6578
|
+
*args,
|
6579
|
+
**kwargs,
|
6580
|
+
) -> None:
|
6509
6581
|
kwargs = get_checkbox_kwargs(*args, **kwargs)
|
6510
6582
|
d = get_checkbox_dict(**kwargs)
|
6511
6583
|
if isinstance(c, str) and c.lower() == "all":
|
@@ -6523,7 +6595,12 @@ class Sheet(tk.Frame):
|
|
6523
6595
|
add_to_options(self.CH.cell_options, c, "checkbox", d)
|
6524
6596
|
self.CH.set_cell_data(c, v)
|
6525
6597
|
|
6526
|
-
def create_index_checkbox(
|
6598
|
+
def create_index_checkbox(
|
6599
|
+
self,
|
6600
|
+
r: AnyIter[int] | int | Literal["all"] = 0,
|
6601
|
+
*args,
|
6602
|
+
**kwargs,
|
6603
|
+
) -> None:
|
6527
6604
|
kwargs = get_checkbox_kwargs(*args, **kwargs)
|
6528
6605
|
d = get_checkbox_dict(**kwargs)
|
6529
6606
|
if isinstance(r, str) and r.lower() == "all":
|
@@ -6568,7 +6645,10 @@ class Sheet(tk.Frame):
|
|
6568
6645
|
) -> None:
|
6569
6646
|
self.delete_checkbox(r, c)
|
6570
6647
|
|
6571
|
-
def delete_row_checkbox(
|
6648
|
+
def delete_row_checkbox(
|
6649
|
+
self,
|
6650
|
+
r: AnyIter[int] | int | Literal["all"] = 0,
|
6651
|
+
) -> None:
|
6572
6652
|
if isinstance(r, str) and r.lower() == "all":
|
6573
6653
|
for r_ in self.MT.row_options:
|
6574
6654
|
self.del_table_row_options_checkbox(r_)
|
@@ -6578,7 +6658,10 @@ class Sheet(tk.Frame):
|
|
6578
6658
|
for r_ in r:
|
6579
6659
|
self.del_table_row_options_checkbox(r_)
|
6580
6660
|
|
6581
|
-
def delete_column_checkbox(
|
6661
|
+
def delete_column_checkbox(
|
6662
|
+
self,
|
6663
|
+
c: AnyIter[int] | int | Literal["all"] = 0,
|
6664
|
+
) -> None:
|
6582
6665
|
if isinstance(c, str) and c.lower() == "all":
|
6583
6666
|
for c_ in self.MT.col_options:
|
6584
6667
|
self.del_table_column_options_checkbox(c_)
|
@@ -6588,7 +6671,10 @@ class Sheet(tk.Frame):
|
|
6588
6671
|
for c_ in c:
|
6589
6672
|
self.del_table_column_options_checkbox(c_)
|
6590
6673
|
|
6591
|
-
def delete_header_checkbox(
|
6674
|
+
def delete_header_checkbox(
|
6675
|
+
self,
|
6676
|
+
c: AnyIter[int] | int | Literal["all"] = 0,
|
6677
|
+
) -> None:
|
6592
6678
|
if isinstance(c, str) and c.lower() == "all":
|
6593
6679
|
for c_ in self.CH.cell_options:
|
6594
6680
|
if "checkbox" in self.CH.cell_options[c_]:
|
@@ -6599,7 +6685,10 @@ class Sheet(tk.Frame):
|
|
6599
6685
|
for c_ in c:
|
6600
6686
|
self.del_header_cell_options_checkbox(c_)
|
6601
6687
|
|
6602
|
-
def delete_index_checkbox(
|
6688
|
+
def delete_index_checkbox(
|
6689
|
+
self,
|
6690
|
+
r: AnyIter[int] | int | Literal["all"] = 0,
|
6691
|
+
) -> None:
|
6603
6692
|
if isinstance(r, str) and r.lower() == "all":
|
6604
6693
|
for r_ in self.RI.cell_options:
|
6605
6694
|
if "checkbox" in self.RI.cell_options[r_]:
|
@@ -6688,7 +6777,7 @@ class Sheet(tk.Frame):
|
|
6688
6777
|
|
6689
6778
|
def dropdown_row(
|
6690
6779
|
self,
|
6691
|
-
r:
|
6780
|
+
r: AnyIter[int] | int | Literal["all"] = 0,
|
6692
6781
|
*args,
|
6693
6782
|
**kwargs,
|
6694
6783
|
) -> Sheet:
|
@@ -6713,7 +6802,7 @@ class Sheet(tk.Frame):
|
|
6713
6802
|
|
6714
6803
|
def dropdown_column(
|
6715
6804
|
self,
|
6716
|
-
c:
|
6805
|
+
c: AnyIter[int] | int | Literal["all"] = 0,
|
6717
6806
|
*args,
|
6718
6807
|
**kwargs,
|
6719
6808
|
) -> Sheet:
|
@@ -6738,7 +6827,7 @@ class Sheet(tk.Frame):
|
|
6738
6827
|
|
6739
6828
|
def create_header_dropdown(
|
6740
6829
|
self,
|
6741
|
-
c:
|
6830
|
+
c: AnyIter[int] | int | Literal["all"] = 0,
|
6742
6831
|
*args,
|
6743
6832
|
**kwargs,
|
6744
6833
|
) -> Sheet:
|
@@ -6762,7 +6851,7 @@ class Sheet(tk.Frame):
|
|
6762
6851
|
|
6763
6852
|
def create_index_dropdown(
|
6764
6853
|
self,
|
6765
|
-
r:
|
6854
|
+
r: AnyIter[int] | int | Literal["all"] = 0,
|
6766
6855
|
*args,
|
6767
6856
|
**kwargs,
|
6768
6857
|
) -> Sheet:
|
@@ -6813,7 +6902,7 @@ class Sheet(tk.Frame):
|
|
6813
6902
|
|
6814
6903
|
def delete_row_dropdown(
|
6815
6904
|
self,
|
6816
|
-
r:
|
6905
|
+
r: AnyIter[int] | int | Literal["all"] = "all",
|
6817
6906
|
) -> None:
|
6818
6907
|
if isinstance(r, str) and r.lower() == "all":
|
6819
6908
|
for r_ in self.MT.row_options:
|
@@ -6827,7 +6916,7 @@ class Sheet(tk.Frame):
|
|
6827
6916
|
|
6828
6917
|
def delete_column_dropdown(
|
6829
6918
|
self,
|
6830
|
-
c:
|
6919
|
+
c: AnyIter[int] | int | Literal["all"] = "all",
|
6831
6920
|
) -> None:
|
6832
6921
|
if isinstance(c, str) and c.lower() == "all":
|
6833
6922
|
for c_ in self.MT.col_options:
|
@@ -6839,7 +6928,7 @@ class Sheet(tk.Frame):
|
|
6839
6928
|
for c_ in c:
|
6840
6929
|
self.del_column_options_dropdown(datacn=c_)
|
6841
6930
|
|
6842
|
-
def delete_header_dropdown(self, c:
|
6931
|
+
def delete_header_dropdown(self, c: AnyIter[int] | int | Literal["all"]) -> None:
|
6843
6932
|
if isinstance(c, str) and c.lower() == "all":
|
6844
6933
|
for c_ in self.CH.cell_options:
|
6845
6934
|
if "dropdown" in self.CH.cell_options[c_]:
|
@@ -6850,7 +6939,7 @@ class Sheet(tk.Frame):
|
|
6850
6939
|
for c_ in c:
|
6851
6940
|
self.del_header_cell_options_dropdown(c_)
|
6852
6941
|
|
6853
|
-
def delete_index_dropdown(self, r:
|
6942
|
+
def delete_index_dropdown(self, r: AnyIter[int] | int | Literal["all"]) -> None:
|
6854
6943
|
if isinstance(r, str) and r.lower() == "all":
|
6855
6944
|
for r_ in self.RI.cell_options:
|
6856
6945
|
if "dropdown" in self.RI.cell_options[r_]:
|
@@ -7079,7 +7168,7 @@ class Sheet(tk.Frame):
|
|
7079
7168
|
|
7080
7169
|
def format_row(
|
7081
7170
|
self,
|
7082
|
-
r:
|
7171
|
+
r: AnyIter[int] | int | Literal["all"],
|
7083
7172
|
formatter_options: dict = {},
|
7084
7173
|
formatter_class: object = None,
|
7085
7174
|
redraw: bool = True,
|
@@ -7109,7 +7198,7 @@ class Sheet(tk.Frame):
|
|
7109
7198
|
|
7110
7199
|
def delete_row_format(
|
7111
7200
|
self,
|
7112
|
-
r:
|
7201
|
+
r: AnyIter[int] | int | Literal["all"] = "all",
|
7113
7202
|
clear_values: bool = False,
|
7114
7203
|
) -> Sheet:
|
7115
7204
|
if is_iterable(r):
|
@@ -7121,7 +7210,7 @@ class Sheet(tk.Frame):
|
|
7121
7210
|
|
7122
7211
|
def format_column(
|
7123
7212
|
self,
|
7124
|
-
c:
|
7213
|
+
c: AnyIter[int] | int | Literal["all"],
|
7125
7214
|
formatter_options: dict = {},
|
7126
7215
|
formatter_class: object = None,
|
7127
7216
|
redraw: bool = True,
|
@@ -7151,7 +7240,7 @@ class Sheet(tk.Frame):
|
|
7151
7240
|
|
7152
7241
|
def delete_column_format(
|
7153
7242
|
self,
|
7154
|
-
c:
|
7243
|
+
c: AnyIter[int] | int | Literal["all"] = "all",
|
7155
7244
|
clear_values: bool = False,
|
7156
7245
|
) -> Sheet:
|
7157
7246
|
if is_iterable(c):
|
@@ -7259,6 +7348,7 @@ class Dropdown(Sheet):
|
|
7259
7348
|
search_function: Callable = dropdown_search_function,
|
7260
7349
|
modified_function: None | Callable = None,
|
7261
7350
|
) -> None:
|
7351
|
+
self.set_yview(0.0)
|
7262
7352
|
self.deselect(redraw=False)
|
7263
7353
|
self.r = r
|
7264
7354
|
self.c = c
|