如何在运行时修改Tkintermapview中Polygon的颜色?
修改tkintermapview多边形颜色的正确方法
直接修改polygon1.fill_color只是更新了对象的属性值,但不会触发地图组件的重绘,所以界面上看不到颜色变化。要实现预期效果,有两种可行方案:
方案一:删除旧多边形后重新创建(推荐)
这是遵循tkintermapview公开API的稳妥方式,不会依赖内部实现细节:
# 初始创建红色多边形 polygon1 = map_widget.set_polygon([(52, -1), (52.5, -1.1), (52.2, -1.5)], fill_color='red', name='Test location') # 修改颜色时,先删除旧多边形 polygon1.delete() # 用相同坐标和新颜色重新创建 polygon1 = map_widget.set_polygon([(52, -1), (52.5, -1.1), (52.2, -1.5)], fill_color='black', name='Test location')
方案二:直接修改Canvas元素属性(高效但依赖内部实现)
tkintermapview的多边形基于tkinter Canvas绘制,可直接操作内部Canvas项更新颜色:
# 初始创建红色多边形 polygon1 = map_widget.set_polygon([(52, -1), (52.5, -1.1), (52.2, -1.5)], fill_color='red', name='Test location') # 更新属性并触发Canvas重绘 polygon1.fill_color = 'black' map_widget.canvas.itemconfigure(polygon1.canvas_polygon, fill=polygon1.fill_color) # 如果需要修改轮廓颜色,可添加: # map_widget.canvas.itemconfigure(polygon1.canvas_polygon, outline=polygon1.outline_color)
内容的提问来源于stack exchange,提问作者Charlie
相关产品推荐
相关产品推荐

