python: Parent-child form operations using ttkbootstrap

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# encoding: utf-8
# 版權所有 2024 ©塗聚文有限公司
# 許可資訊查看:言語成了邀功的功臣,還需要行爲每日來值班嗎?
# 描述: 主、子表單 窗體傳值  Parent-child form operations
# Author    : geovindu,Geovin Du 塗聚文.
# IDE       : PyCharm 2023.1 python 3.11
# OS        : windows 10
# Datetime  : 2024/11/05 20:09
# User      : geovindu
# Product   : PyCharm
# Project   : IctGame
# File      : ttkbootstrap.py
# explain   : 學習
 
 
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
from ttkbootstrap.tableview import Tableview
 
'''
https://ttkbootstrap.readthedocs.io/en/latest/themes/light/
https://ttkbootstrap.readthedocs.io/en/latest/themes/dark/
https://ttkbootstrap.readthedocs.io/en/latest/zh/api/tableview/tableview/
https://ttkbootstrap.readthedocs.io/en/latest/styleguide/entry/
https://docs.pysimplegui.com/en/latest/documentation/module/extending/event_bindings/
https://python-course.eu/tkinter/events-and-binds-in-tkinter.php
 
cerulean
cosmo
cyborg
darkly
flatly
journal
litera
lumen
lux
materia
minty
morph
pulse
quartz
sandstone
simplex
sketchy
sketchy
solar
spacelab
superhero
united
vapor
vapor
zephyr
'''
 
 
class MainWidnow(ttk.Window):
    """
    """
    def __init__(self):
        """
         
        """
        super().__init__(themename="cosmo",title="塗聚文學習進行中")
        #self.Window(themename="cosmo") #superhero   
        self.maxsize=300
        #self.geometry('{}x{}'.format(1350, 900))
        self.first_var = ttk.Variable()
        self.title="main"
        self.themename='superhero'
        self.last_var = ttk.Variable()
        self.occupation_var = ttk.Variable()
        self.colors = self.style.colors
        self.coldata = [
            {"text": "LicenseNumber", "stretch": False},
            "CompanyName",
            {"text": "UserCount", "stretch": False},
        ]
 
        self.rowdata = [
            ('A100', '深圳市分公司', 120),
            ('A101', '廣州市分公司.', 145),
            ('A102', '東莞市分公司.', 136),
            ('A103', '惠州市分公司', 112),
            ('A104', '徽州市分公司.', 245),
            ('A105', '佛山市分公司.', 236),
            ('A106', '陽江市分公司', 212),
            ('A107', '江門市分公司.', 345),
            ('A108', '中山市分公司.', 336),
            ('A109', '河源市分公司', 312),
            ('A110', '贛州市分公司.', 445),
            ('A111', '湖州市分公司.', 436),
            ('A112', '抚州市分公司', 412),
            ('A113', '南昌市分公司.', 545),
            ('A114', '饒州市分公司.', 536),
            ('A115', '吉州市分公司', 512),
            ('A116', '濟州市分公司', 645),
            ('A117', '冀州市分公司.', 636),
            ('A118', '薊州市分公司', 612),
            ('A119', '雷州市分公司.', 745),
            ('A120', '台州市分公司.', 736),
            ('A121', '泰州市分公司', 712),
            ('A122', '南京市分公司.', 845),
            ('A123', '常州市分公司.', 836),
            ('A124', '青州市分公司', 812),
            ('A125', '德州市分公司.', 945),
            ('A126', '幽州市分公司.', 36),
            ('A127', '杭州市分公司', 912),
            ('A128', '溫州市分公司.', 945),
            ('A129', '泉州市分公司', 1036),
            ('A130', '文州市分公司', 1012),
            ('A131', '海州市分公司.', 1045),
            ('A132', '儋州市分公司.', 1136),
            ('A133', '江州市分公司', 1112),
            ('A134', '上海市分公司.', 1145),
            ('A135', '北京市分公司.', 1136)]
 
        self.dt = Tableview(
            master=self,
            coldata=self.coldata,
            rowdata=self.rowdata,
            paginated=True,
            pagesize=15,
            searchable=True,
            bootstyle=PRIMARY,
            stripecolor=(self.colors.light, None),
        )
        self.dt.pack(fill=BOTH, expand=YES, padx=10, pady=10)
        #dt.hide_selected_column(cid=0)  #隱藏第一列
 
 
                 
        self.dt.view.bind("<Double-1>", self.rowselected)
        #dt.view.bind("<<TreeviewSelect>>", rowselected)
 
        b1 = ttk.Button(self, text="Open", bootstyle="success"#,command=self.openwindows
        b1.pack(side=LEFT, padx=5, pady=10)
        #b1.bind("<Double-1>",openwindows)
        b1.bind("<Button-1>",self.openwindows)
         
        b2 = ttk.Button(self, text="New", bootstyle="info-outline")
        b2.pack(side=LEFT, padx=5, pady=10)
 
 
    def rowselected(self,event) -> None:
             try:             
                iid =self.dt.view.selection()[0]
                #print(iid)
                values = self.dt.view.item(iid, 'values')
                self.first_var.set(values[0])
                self.last_var.set(values[1])
                self.occupation_var.set(values[2])
                print(values[0],values[1],values[2])
                data=[values[0],values[1],values[2]]
                subwindow = ChildNewWindow(data)
             except IndexError as err:
                pass
                 
    def openwindows(self,event):
            """
            """
            try:
                print('open windows')
                iid =self.dt.view.selection()[0]            
                values = self.dt.view.item(iid, 'values')
                data=[values[0],values[1],values[2]]               
                subwindow = ChildNewWindow(data)           
                self.update()
            except IndexError as err:
                pass
 
 
class ChildNewWindow(ttk.Window):
    """
    彈出子窗口 ttk.Toplevel
    """
    def __init__(self,data):
        """
             
        :param master:
        """
        super().__init__(title='Child Window')       
        self.geometry('{}x{}'.format(850, 900))
        self.title='Child Window'
        self.label = ttk.Label(self, text=data[0])
        self.label.pack()
        self.labe2 = ttk.Label(self, text=data[1])
        self.labe2.pack()
        self.labe3 = ttk.Label(self, text=data[2])
        self.labe3.pack()
         
        
     
    
 
if __name__=="__main__":
    """
    main output
     
    """
    mainwindow=MainWidnow()   
    mainwindow.mainloop()

  


 

 

posted @   ®Geovin Du Dream Park™  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2023-11-05 c: struct sort descending and ascending
2023-11-05 c: Analyzing text in window and Ubuntu
2022-11-05 CSharp: Factory Method Pattern in donet 6
2009-11-05 Dijkstra's Shortest Path Algorithm(最短路径算法)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示