1
+ #fill= X,Y to expand along x and y axis
2
+ # to get a message box
3
+ # response= messagebox. return is 1 and 0 |for ask question it is yes or no all other return ok
4
+ # showinfo,showwarning,askquestion,showerror,askokcancel,askyesno
5
+ # image in new window should be global
6
+ # config to change the attribute
7
+ # state of button can be disabled
8
+ # ipad for inner space and justify for aligning
9
+
10
+ from numpy import source
11
+
12
+
13
+ source = []
14
+ from tkinter import *
15
+ from tkinter import ttk
16
+ from PIL import ImageTk ,Image
17
+ from matplotlib import image
18
+ from tkinter import filedialog
19
+ import tkinter
20
+ import tkinter .messagebox
21
+ import customtkinter
22
+
23
+ customtkinter .set_appearance_mode ("System" ) # Modes: "System" (standard), "Dark", "Light"
24
+ customtkinter .set_default_color_theme ("blue" ) # Themes: "blue" (standard), "green", "dark-blue"
25
+
26
+
27
+ class App (customtkinter .CTk ):
28
+
29
+ WIDTH = 780
30
+ HEIGHT = 520
31
+
32
+ def __init__ (self ):
33
+ super ().__init__ ()
34
+
35
+ self .title ("FOOD" )
36
+ self .geometry (f"{ App .WIDTH } x{ App .HEIGHT } " )
37
+ self .state ('zoomed' )
38
+ self .protocol ("WM_DELETE_WINDOW" , self .on_closing ) # call .on_closing() when app gets closed
39
+
40
+ # ============ create two frames ============
41
+
42
+ # configure grid layout (2x1)
43
+ self .grid_columnconfigure (1 , weight = 1 )
44
+ self .grid_rowconfigure (0 , weight = 1 )
45
+
46
+ self .frame_left = customtkinter .CTkFrame (master = self ,
47
+ width = 180 ,
48
+ corner_radius = 0 )
49
+ self .frame_left .grid (row = 0 , column = 0 , sticky = "nswe" )
50
+
51
+ self .frame_right = customtkinter .CTkFrame (master = self )
52
+ self .frame_right .grid (row = 0 , column = 1 , sticky = "nswe" , padx = 20 , pady = 20 )
53
+
54
+ # ============ frame_left ============
55
+
56
+ # configure grid layout (1x11)
57
+ self .frame_left .grid_rowconfigure (0 , minsize = 10 ) # empty row with minsize as spacing
58
+ self .frame_left .grid_rowconfigure (5 , weight = 1 ) # empty row as spacing
59
+ self .frame_left .grid_rowconfigure (8 , minsize = 20 ) # empty row with minsize as spacing
60
+ self .frame_left .grid_rowconfigure (11 , minsize = 10 ) # empty row with minsize as spacing
61
+
62
+ self .label_1 = customtkinter .CTkLabel (master = self .frame_left ,
63
+ text = "Tools Bar" ,
64
+ text_font = ("Roboto Medium" , - 16 )) # font name and size in px
65
+ self .label_1 .grid (row = 1 , column = 0 , pady = 10 , padx = 10 )
66
+
67
+ self .button_1 = customtkinter .CTkButton (master = self .frame_left ,
68
+ text = "CTkButton" ,
69
+ command = self .button_event )
70
+ self .button_1 .grid (row = 2 , column = 0 , pady = 10 , padx = 20 )
71
+
72
+ self .button_2 = customtkinter .CTkButton (master = self .frame_left ,
73
+ text = "CTkButton" ,
74
+ command = self .button_event )
75
+ self .button_2 .grid (row = 3 , column = 0 , pady = 10 , padx = 20 )
76
+
77
+ self .button_3 = customtkinter .CTkButton (master = self .frame_left ,
78
+ text = "CTkButton" ,
79
+ command = self .button_event )
80
+ self .button_3 .grid (row = 4 , column = 0 , pady = 10 , padx = 20 )
81
+
82
+ self .label_mode = customtkinter .CTkLabel (master = self .frame_left , text = "Appearance Mode:" )
83
+ self .label_mode .grid (row = 9 , column = 0 , pady = 0 , padx = 20 , sticky = "w" )
84
+
85
+ self .optionmenu_1 = customtkinter .CTkOptionMenu (master = self .frame_left ,
86
+ values = ["Light" , "Dark" , "System" ],
87
+ command = self .change_appearance_mode )
88
+ self .optionmenu_1 .grid (row = 10 , column = 0 , pady = 10 , padx = 20 , sticky = "w" )
89
+
90
+ # ============ frame_right ============
91
+
92
+ # configure grid layout (3x7)
93
+ self .frame_right .rowconfigure ((0 , 1 , 2 , 3 ), weight = 1 )
94
+ self .frame_right .rowconfigure (7 , weight = 10 )
95
+ self .frame_right .columnconfigure ((0 , 1 ), weight = 1 )
96
+ self .frame_right .columnconfigure (2 , weight = 0 )
97
+
98
+ self .frame_info = customtkinter .CTkFrame (master = self .frame_right )
99
+ self .frame_info .grid (row = 0 , column = 0 , columnspan = 2 , rowspan = 4 , pady = 20 , padx = 20 , sticky = "nsew" )
100
+
101
+ # ============ frame_info ============
102
+
103
+ # configure grid layout (1x1)
104
+ self .frame_info .rowconfigure (0 , weight = 1 )
105
+ self .frame_info .columnconfigure (0 , weight = 1 )
106
+
107
+ self .label_info_1 = customtkinter .CTkLabel (master = self .frame_info ,
108
+ text = "CTkLabel: Lorem ipsum dolor sit,\n " +
109
+ "amet consetetur sadipscing elitr,\n " +
110
+ "sed diam nonumy eirmod tempor" ,
111
+ height = 100 ,
112
+ corner_radius = 6 , # <- custom corner radius
113
+ fg_color = ("white" , "gray38" ), # <- custom tuple-color
114
+ justify = tkinter .LEFT )
115
+ self .label_info_1 .grid (column = 0 , row = 0 , sticky = "nwe" , padx = 15 , pady = 15 )
116
+
117
+ self .progressbar = customtkinter .CTkProgressBar (master = self .frame_info )
118
+ self .progressbar .grid (row = 1 , column = 0 , sticky = "ew" , padx = 15 , pady = 15 )
119
+
120
+ # ============ frame_right ============
121
+
122
+ self .radio_var = tkinter .IntVar (value = 0 )
123
+
124
+ self .label_radio_group = customtkinter .CTkLabel (master = self .frame_right ,
125
+ text = "CTkRadioButton Group:" )
126
+ self .label_radio_group .grid (row = 0 , column = 2 , columnspan = 1 , pady = 20 , padx = 10 , sticky = "" )
127
+
128
+ self .radio_button_1 = customtkinter .CTkRadioButton (master = self .frame_right ,
129
+ variable = self .radio_var ,
130
+ value = 0 )
131
+ self .radio_button_1 .grid (row = 1 , column = 2 , pady = 10 , padx = 20 , sticky = "n" )
132
+
133
+ self .radio_button_2 = customtkinter .CTkRadioButton (master = self .frame_right ,
134
+ variable = self .radio_var ,
135
+ value = 1 )
136
+ self .radio_button_2 .grid (row = 2 , column = 2 , pady = 10 , padx = 20 , sticky = "n" )
137
+
138
+ self .radio_button_3 = customtkinter .CTkRadioButton (master = self .frame_right ,
139
+ variable = self .radio_var ,
140
+ value = 2 )
141
+ self .radio_button_3 .grid (row = 3 , column = 2 , pady = 10 , padx = 20 , sticky = "n" )
142
+
143
+ self .slider_1 = customtkinter .CTkSlider (master = self .frame_right ,
144
+ from_ = 0 ,
145
+ to = 1 ,
146
+ number_of_steps = 3 ,
147
+ command = self .progressbar .set )
148
+ self .slider_1 .grid (row = 4 , column = 0 , columnspan = 2 , pady = 10 , padx = 20 , sticky = "we" )
149
+
150
+ self .slider_2 = customtkinter .CTkSlider (master = self .frame_right ,
151
+ command = self .progressbar .set )
152
+ self .slider_2 .grid (row = 5 , column = 0 , columnspan = 2 , pady = 10 , padx = 20 , sticky = "we" )
153
+
154
+ self .switch_1 = customtkinter .CTkSwitch (master = self .frame_right ,
155
+ text = "CTkSwitch" )
156
+ self .switch_1 .grid (row = 4 , column = 2 , columnspan = 1 , pady = 10 , padx = 20 , sticky = "we" )
157
+
158
+ self .switch_2 = customtkinter .CTkSwitch (master = self .frame_right ,
159
+ text = "CTkSwitch" )
160
+ self .switch_2 .grid (row = 5 , column = 2 , columnspan = 1 , pady = 10 , padx = 20 , sticky = "we" )
161
+
162
+ self .combobox_1 = customtkinter .CTkComboBox (master = self .frame_right ,
163
+ values = ["Value 1" , "Value 2" ])
164
+ self .combobox_1 .grid (row = 6 , column = 2 , columnspan = 1 , pady = 10 , padx = 20 , sticky = "we" )
165
+
166
+ self .check_box_1 = customtkinter .CTkCheckBox (master = self .frame_right ,
167
+ text = "CTkCheckBox" )
168
+ self .check_box_1 .grid (row = 6 , column = 0 , pady = 10 , padx = 20 , sticky = "w" )
169
+
170
+ self .check_box_2 = customtkinter .CTkCheckBox (master = self .frame_right ,
171
+ text = "CTkCheckBox" )
172
+ self .check_box_2 .grid (row = 6 , column = 1 , pady = 10 , padx = 20 , sticky = "w" )
173
+
174
+ self .entry = customtkinter .CTkEntry (master = self .frame_right ,
175
+ width = 120 ,
176
+ placeholder_text = "CTkEntry" )
177
+ self .entry .grid (row = 8 , column = 0 , columnspan = 2 , pady = 20 , padx = 20 , sticky = "we" )
178
+
179
+ self .button_5 = customtkinter .CTkButton (master = self .frame_right ,
180
+ text = "CTkButton" ,
181
+ border_width = 2 , # <- custom border_width
182
+ fg_color = None , # <- no fg_color
183
+ command = self .button_event )
184
+ self .button_5 .grid (row = 8 , column = 2 , columnspan = 1 , pady = 20 , padx = 20 , sticky = "we" )
185
+
186
+ # set default values
187
+ self .optionmenu_1 .set ("Dark" )
188
+ self .button_3 .configure (state = "disabled" , text = "Disabled CTkButton" )
189
+ self .combobox_1 .set ("CTkCombobox" )
190
+ self .radio_button_1 .select ()
191
+ self .slider_1 .set (0.2 )
192
+ self .slider_2 .set (0.7 )
193
+ self .progressbar .set (0.5 )
194
+ self .switch_2 .select ()
195
+ self .radio_button_3 .configure (state = tkinter .DISABLED )
196
+ self .check_box_1 .configure (state = tkinter .DISABLED , text = "CheckBox disabled" )
197
+ self .check_box_2 .select ()
198
+
199
+ def button_event (self ):
200
+ print ("Button pressed" )
201
+
202
+ def change_appearance_mode (self , new_appearance_mode ):
203
+ customtkinter .set_appearance_mode (new_appearance_mode )
204
+
205
+ def on_closing (self , event = 0 ):
206
+ self .destroy ()
207
+
208
+
209
+ if __name__ == "__main__" :
210
+ app = App ()
211
+ app .mainloop ()
0 commit comments