A simple tkinter map widget
Project description
tkmap
A Tkinter-based interactive map widget for Python, supporting OpenStreetMap and custom tile sources. Easily embed a map in your Tkinter GUI, handle user interaction, and respond to map events.
Features
- Fast, smooth map panning and zooming
- Customizable tile sources (e.g., OpenStreetMap)
- Mouse and viewport event handling
- Simple integration with Tkinter applications
Installation
Install via pip (after cloning or when available on PyPI):
pip install tkmap
Minimal Example
This example launches a Tkinter window with an interactive OpenStreetMap viewer:
import tkinter as tk
from pathlib import Path
import requests
from platformdirs import user_cache_dir
from tkmap import LonLat, MapWidget
from tkmap.tileloaders.default import DefaultTileLoader
def main():
tile_loader = DefaultTileLoader(
url="https://tile.openstreetmap.org/{z}/{x}/{y}.png",
base_cache_dir=Path(user_cache_dir("tkmap")) / "tile_cache",
requests_session=requests.Session(),
)
root = tk.Tk()
root.geometry("800x600")
root.title("tkmap OpenStreetMap Demo")
map_widget = MapWidget(
root,
center=LonLat(0, 0),
zoom=2,
tile_loader=tile_loader,
)
map_widget.pack(fill="both", expand=True)
tile_loader.start_remote_fetch_queue_processing(root.winfo_toplevel(), interval_ms=100)
root.mainloop()
if __name__ == "__main__":
main()
Handling Events
You can respond to mouse movement and viewport changes using event callbacks:
from tkmap.events import MouseMovedEvent, ViewportChangeEvent
# ... (setup code as above)
def on_mouse_moved(event: MouseMovedEvent):
print(f"Mouse at lat={event.lonlat.lat:.6f}, lon={event.lonlat.lon:.6f}")
def on_viewport_changed(event: ViewportChangeEvent):
print(f"Viewport center: {event.center.lat:.6f}, {event.center.lon:.6f}, zoom={event.zoom}")
map_widget.on_mouse_moved(on_mouse_moved)
map_widget.on_viewport_change(on_viewport_changed)
License
Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tkmap-0.1.2.tar.gz.
File metadata
- Download URL: tkmap-0.1.2.tar.gz
- Upload date:
- Size: 15.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.3 Linux/6.11.0-1015-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fbca6544dbc5e577c2c65d5c35879cdd1ace5f95286652600ad488f7b8b475f
|
|
| MD5 |
01acbb8fb8f5d0b698e96ea14dc72d3a
|
|
| BLAKE2b-256 |
9ba54b65a7a511dd1e02e9d7042a1c7b0b273fb05f3391d285d294b769be5e10
|
File details
Details for the file tkmap-0.1.2-py3-none-any.whl.
File metadata
- Download URL: tkmap-0.1.2-py3-none-any.whl
- Upload date:
- Size: 22.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.3 Linux/6.11.0-1015-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9ff6f42062057bea5e3d119b6603de2ee3870cd884a24d8f2187e0068f0bbdd
|
|
| MD5 |
528c37dabd8a4813cbfee486d79faf1d
|
|
| BLAKE2b-256 |
08ecfb9ea23cdfdebf26291235679634c4feb144dfdfd116a311fe934fc48fd2
|