📜  使用Python从给定的州名或城市名中搜索国家名的 GUI 应用程序(1)

📅  最后修改于: 2023-12-03 15:06:53.159000             🧑  作者: Mango

用Python实现搜索州和城市对应的国家的GUI应用程序

简介

这是一个使用Python编写的图形用户界面(GUI)应用程序,它允许用户输入州或城市名称并返回该地区所属国家的名称。该应用程序使用了Python的tkinter模块来构建GUI。

运行环境

为了运行这个应用程序,你需要安装Python 3.x和几个相关的Python模块,这些模块包括:

  • tkinter
  • pandas

可以使用pip在命令行中安装它们:

pip install tkinter
pip install pandas
程序设计

这个应用程序由两部分组成:GUI和国家搜索功能。

GUI设计

应用程序的GUI组件包括:

  • 一个标签,用于引导用户输入州或城市名称。
  • 一个输入框,用户可以在其中输入州或城市名称。
  • 一个查询按钮,当用户单击它时,它将调用国家搜索函数来查找州或城市对应的国家。
  • 一个标签,用于显示搜索结果。
# 导入tkinter模块
import tkinter as tk

# 创建应用程序的GUI
root = tk.Tk()
root.title('搜索州和城市所属的国家')

# 添加GUI部件
tk.Label(root, text='输入州或城市的名称:').grid(row=0, column=0)
entry = tk.Entry(root)
entry.grid(row=0, column=1)
button = tk.Button(root, text='查询')
button.grid(row=0, column=2)
result_label = tk.Label(root, text='')
result_label.grid(row=1, columnspan=3)

# 运行程序
root.mainloop()
国家搜索功能

国家搜索功能从一个CSV文件中读取数据并使用pandas模块来搜索州或城市对应的国家。CSV文件中包含三列:州或城市的名称、所属国家的名称和ISO代码。

import pandas as pd

# 读取包含地区信息的CSV文件
states_df = pd.read_csv('states.csv')

# 搜索特定州或城市对应的国家
def search_country(name):
    state_row = states_df[states_df['State'].str.lower() == name.lower()]
    if not state_row.empty:
        country_name = state_row['Country'].values[0]
        iso_code = state_row['ISO Code'].values[0]
        result = f'{name.title()}是{country_name.title()}的一部分,ISO代码为{iso_code.upper()}.'
    else:
        result = f'未找到{name.title()}对应的国家。'
    return result
将GUI和搜索功能组合起来

我们将查询按钮与国家搜索功能的实现绑定。当查询按钮被单击时,它将获取用户输入的州或城市名称并调用search_country函数来搜索地区对应的国家。搜索结果将在标签中显示。

# 查询按钮的回调函数
def search_button_callback():
    name = entry.get()
    result = search_country(name)
    result_label.config(text=result)

# 将查询按钮与回调函数绑定
button.config(command=search_button_callback)

最终的完整程序如下:

# 导入模块
import tkinter as tk
import pandas as pd

# 读取包含地区信息的CSV文件
states_df = pd.read_csv('states.csv')

# 搜索特定州或城市对应的国家
def search_country(name):
    state_row = states_df[states_df['State'].str.lower() == name.lower()]
    if not state_row.empty:
        country_name = state_row['Country'].values[0]
        iso_code = state_row['ISO Code'].values[0]
        result = f'{name.title()}是{country_name.title()}的一部分,ISO代码为{iso_code.upper()}.'
    else:
        result = f'未找到{name.title()}对应的国家。'
    return result

# 创建应用程序的GUI
root = tk.Tk()
root.title('搜索州和城市所属的国家')

# 添加GUI部件
tk.Label(root, text='输入州或城市的名称:').grid(row=0, column=0)
entry = tk.Entry(root)
entry.grid(row=0, column=1)
button = tk.Button(root, text='查询')
button.grid(row=0, column=2)
result_label = tk.Label(root, text='')
result_label.grid(row=1, columnspan=3)

# 查询按钮的回调函数
def search_button_callback():
    name = entry.get()
    result = search_country(name)
    result_label.config(text=result)

# 将查询按钮与回调函数绑定
button.config(command=search_button_callback)

# 运行应用程序
root.mainloop()
总结

我们已经完成了一个使用Python编写的搜索州和城市对应国家的GUI应用程序。该应用程序使用了tkinter模块构建GUI,pandas模块实现国家搜索功能。用户输入州或城市名称,然后单击查询按钮即可返回对应的国家名称。该应用程序可以用作其他程序的一部分,例如地理信息系统,用于将位置信息与国家名称进行匹配。