1- import tkinter
21import customtkinter
32from tkintermapview import TkinterMapView
43
5- customtkinter .set_appearance_mode ("dark" )
6- customtkinter .set_default_color_theme ("dark-blue" )
4+ customtkinter .set_default_color_theme ("blue" )
75
86
97class App (customtkinter .CTk ):
108
11- APP_NAME = "TkinterMapView with CustomTkinter example "
9+ APP_NAME = "TkinterMapView with CustomTkinter"
1210 WIDTH = 800
1311 HEIGHT = 500
1412
@@ -32,74 +30,69 @@ def __init__(self, *args, **kwargs):
3230 self .grid_columnconfigure (1 , weight = 1 )
3331 self .grid_rowconfigure (0 , weight = 1 )
3432
35- self .frame_left = customtkinter .CTkFrame (master = self , width = 150 , corner_radius = 0 )
33+ self .frame_left = customtkinter .CTkFrame (master = self , width = 150 , corner_radius = 0 , fg_color = None )
3634 self .frame_left .grid (row = 0 , column = 0 , padx = 0 , pady = 0 , sticky = "nsew" )
3735
38- self .frame_right = customtkinter .CTkFrame (master = self , corner_radius = 0 , fg_color = self . fg_color )
36+ self .frame_right = customtkinter .CTkFrame (master = self , corner_radius = 0 )
3937 self .frame_right .grid (row = 0 , column = 1 , rowspan = 1 , pady = 0 , padx = 0 , sticky = "nsew" )
4038
4139 # ============ frame_left ============
4240
41+ self .frame_left .grid_rowconfigure (2 , weight = 1 )
42+
4343 self .button_1 = customtkinter .CTkButton (master = self .frame_left ,
4444 text = "Set Marker" ,
45- command = self .set_marker_event ,
46- width = 120 , height = 30 ,
47- border_width = 0 ,
48- corner_radius = 8 )
45+ command = self .set_marker_event )
4946 self .button_1 .grid (pady = (20 , 0 ), padx = (20 , 20 ), row = 0 , column = 0 )
5047
5148 self .button_2 = customtkinter .CTkButton (master = self .frame_left ,
5249 text = "Clear Markers" ,
53- command = self .clear_marker_event ,
54- width = 120 , height = 30 ,
55- border_width = 0 ,
56- corner_radius = 8 )
50+ command = self .clear_marker_event )
5751 self .button_2 .grid (pady = (20 , 0 ), padx = (20 , 20 ), row = 1 , column = 0 )
5852
53+ self .map_label = customtkinter .CTkLabel (self .frame_left , text = "Tile Server:" , anchor = "w" )
54+ self .map_label .grid (row = 3 , column = 0 , padx = (20 , 20 ), pady = (20 , 0 ))
55+ self .map_option_menu = customtkinter .CTkOptionMenu (self .frame_left , values = ["OpenStreetMap" , "Google normal" , "Google satellite" ],
56+ command = self .change_map )
57+ self .map_option_menu .grid (row = 4 , column = 0 , padx = (20 , 20 ), pady = (10 , 0 ))
58+
59+ self .appearance_mode_label = customtkinter .CTkLabel (self .frame_left , text = "Appearance Mode:" , anchor = "w" )
60+ self .appearance_mode_label .grid (row = 5 , column = 0 , padx = (20 , 20 ), pady = (20 , 0 ))
61+ self .appearance_mode_optionemenu = customtkinter .CTkOptionMenu (self .frame_left , values = ["Light" , "Dark" , "System" ],
62+ command = self .change_appearance_mode )
63+ self .appearance_mode_optionemenu .grid (row = 6 , column = 0 , padx = (20 , 20 ), pady = (10 , 20 ))
64+
5965 # ============ frame_right ============
6066
61- self .frame_right .grid_rowconfigure (0 , weight = 1 )
62- self .frame_right .grid_rowconfigure (1 , weight = 0 )
67+ self .frame_right .grid_rowconfigure (1 , weight = 1 )
68+ self .frame_right .grid_rowconfigure (0 , weight = 0 )
6369 self .frame_right .grid_columnconfigure (0 , weight = 1 )
6470 self .frame_right .grid_columnconfigure (1 , weight = 0 )
6571 self .frame_right .grid_columnconfigure (2 , weight = 1 )
6672
67- self .map_widget = TkinterMapView (self .frame_right , corner_radius = 11 )
68- self .map_widget .grid (row = 0 , rowspan = 1 , column = 0 , columnspan = 3 , sticky = "nswe" , padx = (20 , 20 ), pady = (20 , 0 ))
69- self .map_widget .set_address ("Berlin" )
73+ self .map_widget = TkinterMapView (self .frame_right , corner_radius = 0 )
74+ self .map_widget .grid (row = 1 , rowspan = 1 , column = 0 , columnspan = 3 , sticky = "nswe" , padx = (0 , 0 ), pady = (0 , 0 ))
7075
7176 self .entry = customtkinter .CTkEntry (master = self .frame_right ,
72- placeholder_text = "type address" ,
73- width = 140 ,
74- height = 30 ,
75- corner_radius = 8 )
76- self .entry .grid (row = 1 , column = 0 , sticky = "we" , padx = (20 , 0 ), pady = 20 )
77+ placeholder_text = "type address" )
78+ self .entry .grid (row = 0 , column = 0 , sticky = "we" , padx = (12 , 0 ), pady = 12 )
7779 self .entry .entry .bind ("<Return>" , self .search_event )
7880
7981 self .button_5 = customtkinter .CTkButton (master = self .frame_right ,
80- height = 30 ,
8182 text = "Search" ,
82- command = self .search_event ,
83- border_width = 0 ,
84- corner_radius = 8 )
85- self .button_5 .grid (row = 1 , column = 1 , sticky = "w" , padx = (20 , 0 ), pady = 20 )
86-
87- self .slider_1 = customtkinter .CTkSlider (master = self .frame_right ,
88- width = 200 ,
89- height = 16 ,
90- from_ = 0 , to = 19 ,
91- border_width = 5 ,
92- command = self .slider_event )
93- self .slider_1 .grid (row = 1 , column = 2 , sticky = "e" , padx = 20 , pady = 20 )
94- self .slider_1 .set (self .map_widget .zoom )
83+ width = 90 ,
84+ command = self .search_event )
85+ self .button_5 .grid (row = 0 , column = 1 , sticky = "w" , padx = (12 , 0 ), pady = 12 )
86+
87+ # Set default values
88+ self .map_widget .set_address ("Berlin" )
89+ self .map_option_menu .set ("OpenStreetMap" )
90+ self .appearance_mode_optionemenu .set ("Dark" )
9591
9692 def search_event (self , event = None ):
9793 self .map_widget .set_address (self .entry .get ())
9894 self .slider_1 .set (self .map_widget .zoom )
9995
100- def slider_event (self , value ):
101- self .map_widget .set_zoom (value )
102-
10396 def set_marker_event (self ):
10497 current_position = self .map_widget .get_position ()
10598 self .marker_list .append (self .map_widget .set_marker (current_position [0 ], current_position [1 ]))
@@ -108,6 +101,17 @@ def clear_marker_event(self):
108101 for marker in self .marker_list :
109102 marker .delete ()
110103
104+ def change_appearance_mode (self , new_appearance_mode : str ):
105+ customtkinter .set_appearance_mode (new_appearance_mode )
106+
107+ def change_map (self , new_map : str ):
108+ if new_map == "OpenStreetMap" :
109+ self .map_widget .set_tile_server ("https://a.tile.openstreetmap.org/{z}/{x}/{y}.png" )
110+ elif new_map == "Google normal" :
111+ self .map_widget .set_tile_server ("https://mt0.google.com/vt/lyrs=m&hl=en&x={x}&y={y}&z={z}&s=Ga" , max_zoom = 22 )
112+ elif new_map == "Google satellite" :
113+ self .map_widget .set_tile_server ("https://mt0.google.com/vt/lyrs=s&hl=en&x={x}&y={y}&z={z}&s=Ga" , max_zoom = 22 )
114+
111115 def on_closing (self , event = 0 ):
112116 self .destroy ()
113117
0 commit comments