如何在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
相关产品推荐
相关产品推荐

