You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TkinterMapView标记中存储数据并点击时访问

在TkinterMapView中为标记存储并访问自定义数据

我正在使用TkinterMapView,希望在创建地图标记时向其存储自定义数据,并在点击标记触发回调函数时访问这些数据。

初始代码

import tkinter
import tkinter.messagebox
from tkintermapview import TkinterMapView
from tkinter import simpledialog

class App(tkinter.Tk):

    APP_NAME = "name.py"
    WIDTH = 800
    HEIGHT = 750

    def __init__(self, *args, **kwargs):
        tkinter.Tk.__init__(self, *args, **kwargs)

        # 标记触发的命令函数
        def click_command(self, marker):
            self.map_widget.delete_all_marker()
            
        # 创建标记
        self.map_widget.set_marker(56.243350, -3.9111328, text="Example_text", marker_color_circle = '#E622C5', command = self.click_command)

尝试过程

官方文档提到:你可以通过data属性在标记内存储对象或引用,该属性可在创建标记时设置,也可通过marker.data访问或修改。

我最初错误地尝试直接给地图组件设置data属性:

self.map_widget.data('test value')

以及

self.map_widget.data(9999)

显然这种方式无法将数据绑定到具体的标记上。

最终实现方案

通过在创建标记时直接传入data参数,即可将自定义数据绑定到标记上,之后在点击回调函数中通过marker.data访问该数据。修改后的核心代码如下:

def __init__(self, data: any=None, *args, **kwargs):
    tkinter.Tk.__init__(self, *args, **kwargs)
    
    # 标记触发的命令函数
    def click_command(self, marker):
        # 访问标记绑定的自定义数据
        string = marker.data
        # 可在此添加数据处理逻辑
        print(string)
    
    # 创建标记并传入自定义数据
    self.map_widget.set_marker(56.243350, -3.9111328, 
                               text="Example_text", 
                               marker_color_circle = '#E622C5', 
                               command = self.click_command,
                               data='some string')

内容的提问来源于stack exchange,提问作者Josh Alton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:07:16