Python实战小Demo:基于Tkinter和Pyecharts制作足迹地图

Python小Demo:Tkinter制作足迹地图

环境

需要Tkinter与百度开源的pyecharts
安装方法:
pyecharts安装

pip install pyecharts

# 地图bao
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg

功能

  1. 制作具有下拉列表的界面展示中国城市列表,共343座城市
  2. 点击OK按钮生成足迹地图,自动打开浏览器查看足迹地图
  3. 每8个城市换行

代码

import tkinter as tk
import tkinter.messagebox
from tkinter import ttk
import json
import re
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.options import InitOpts
import os
import webbrowser


# 读取province_cities.json
province_cities = json.load(open("./province_cities.json", "r", encoding="utf-8"))


# 主界面
root = tk.Tk()
root.title("City Map")
root.geometry("600x600")

# 初始化一个空的city_selection
city_selection = dict()
all_cities = []


#  闭包
def make_tracer(city):
    return lambda *args: on_checkbutton_toggled(city)


for province in province_cities:
    for city in province_cities[province]:
        var = tk.IntVar()
        var.trace_add("write", make_tracer(city))
        city_selection[city] = var

        all_cities.append(city)
print(len(all_cities))

"""
整体布局
"""
# 画布Canvas
canvas = tk.Canvas(root, bg="lightblue", highlightthickness=0)
canvas.pack(side="left", fill="both", expand=True)
# 框架Frame,放置在Canvas上
frame = tk.Frame(canvas, bg="white")
canvas_frame = canvas.create_window((0, 0), window=frame, anchor="nw")
# 垂直滚动条
scrollbar = tk.Scrollbar(root, orient="vertical", command=canvas.yview)
scrollbar.pack(side="right", fill="y")
# 绑定
canvas.configure(yscrollcommand=scrollbar.set)


def on_checkbutton_toggled(city_name):
    if city_selection[city_name].get() == 1:
        print(f"{
     city_name} 被选中")
    else:
        print(f"{
     city_name} 被取消选中")


# 调整显示的文字
def adjust_city_text(city_name: str):
    suffixes = ["市", "地区", "盟", "特别行政区"]
    # 正则替代
    for suffix in suffixes:
        city_name = re.sub(rf"{
     suffix}$", '', city_name)
    # 30个自治州
    autonomous_prefectures = [
        "延边", "恩施", "湘西", "阿坝", "甘孜", "凉山", "黔东南", "黔南", "黔西南", "楚雄",
        "红河", "文山", "西双版纳", "大理", "德宏", "怒江", "迪庆", "临夏", "甘南", "海南",
        "海北", "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱旅行的小李同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值