使用 Python 开发的实时世界时间应用程序



实时世界时间项目是一个 GUI 应用程序,使用基本的 Python 和名为 Tkinter 的库进行编码。该选项提供了一个输入大陆和国家以显示当前本地时间并在地图上打开 Google 地图显示该国家/地区位置的功能。

所需库

首先,确保已安装以下库:

  • **Tkinter** - 它与 Python 一起提供,用于定义和设计图形用户界面应用程序。
  • **pytz** - 此库用于时区管理。
  • **webbrowser** - 此库用于打开 URL 的网页浏览器。

安装

可以使用 PIP 或通过直接命令提示符进行安装。以下是安装所需库的代码语句。

要安装 tkinter,请使用以下命令:

pip install tkinter

要安装 pytz,请使用以下命令:

pip install pytz

您可以从命令提示符下官方文档获取 webbrowser 模块,如下所示:

python -m webbrowser -t "https://www.pythonlang.cn"

创建实时世界时间应用程序的步骤

步骤 1:导入必要的库

使用以下代码语句导入所需的库:

  • 导入 datetime 用于处理日期和时间。
  • 导入 pytz 用于时区转换。
  • 导入 tkinter 和 ttk 用于 GUI 元素。
  • 导入 webbrowser 以打开 URL。

步骤 2:初始化 Tkinter 窗口

要**初始化 tkinter 窗口**:

  • 使用 Tk() 创建一个窗口。
  • 设置窗口的标题和大小。

步骤 3:定义函数

以下是用于在项目中完成不同任务的函数:

  • **open_map()** - 此函数根据所选国家/地区打开 Google 地图。
  • **update_map_and_time()** - 此函数更新显示的时间并打开 Google 地图。
  • **update_countries(event)** - 此函数在选择大洲时更新国家/地区列表。

步骤 4:创建下拉菜单

您必须创建以下下拉菜单:

  • 选择大陆。
  • 国家/地区选择,根据大陆填充。

步骤 5:显示当前时间

要显示当前时间,请使用标签显示所选国家/地区的本地时间。

步骤 6:将函数绑定到事件

为以下内容绑定函数:

  • 大陆下拉菜单以更新国家/地区列表。
  • 国家/地区下拉菜单以更新时间和地图。

步骤 7:运行应用程序

使用 root.mainloop() 启动 Tkinter 事件循环。

创建实时世界时间应用程序的代码

from datetime import datetime
import pytz
from tkinter import *
from tkinter import ttk
import webbrowser

root = Tk()
root.title("OPEN World")
root.geometry("700x400")

# Function to open Google Maps with the selected location
def open_map():
   map_url = f"https://www.google.com/maps/search/?api=1&query={country_var.get().replace(' ', '+')}"
   webbrowser.open(map_url)

# Function to update the map and time display
def update_map_and_time():
   continent = continent_var.get()
   country = country_var.get()

   if continent == 'Asia':
      if country == 'India':
         timezone = 'Asia/Kolkata'
      elif country == 'China':
         timezone = 'Asia/Shanghai'
      elif country == 'Japan':
         timezone = 'Asia/Tokyo'
      elif country == 'Pakistan':
         timezone = 'Asia/Karachi'
      elif country == 'Bangladesh':
         timezone = 'Asia/Dhaka'
      else:
         return
   elif continent == 'Australia':
      timezone = 'Australia/Victoria'
   elif continent == 'Africa':
      if country == 'Nigeria':
         timezone = 'Africa/Lagos'
      elif country == 'Algeria':
         timezone = 'Africa/Algiers'
      else:
         return
   elif continent == 'America':
      if country == 'USA (West)':
         timezone = 'America/Los_Angeles'
      elif country == 'Argentina':
         timezone = 'America/Argentina/Buenos_Aires'
      elif country == 'Canada':
         timezone = 'America/Toronto'
      elif country == 'Brazil':
         timezone = 'America/Sao_Paulo'
      else:
         return
   elif continent == 'Europe':
      if country == 'UK':
         timezone = 'Europe/London'
      elif country == 'Portugal':
         timezone = 'Europe/Lisbon'
      elif country == 'Italy':
         timezone = 'Europe/Rome'
      elif country == 'Spain':
         timezone = 'Europe/Madrid'
      else:
         return
    
   # Update the time
   home = pytz.timezone(timezone)
   local_time = datetime.now(home)
   current_time = local_time.strftime("%H:%M:%S")
   clock_label.config(text=current_time)

   # Open Google Maps in the web browser
   open_map()

# Function to update the country options based on selected continent
def update_countries(event):
   continent = continent_var.get()

   if continent == 'Asia':
      countries = ['India', 'China', 'Japan', 'Pakistan', 'Bangladesh']
   elif continent == 'Australia':
      countries = ['Australia']
   elif continent == 'Africa':
      countries = ['Nigeria', 'Algeria']
   elif continent == 'America':
      countries = ['USA (West)', 'Argentina', 'Canada', 'Brazil']
   elif continent == 'Europe':
      countries = ['UK', 'Portugal', 'Italy', 'Spain']
   else:
      countries = []

   country_menu['values'] = countries
   country_var.set('')  # Reset country selection

# Continent Selection
continent_var = StringVar()
continent_var.set('Asia')  # Default value
continent_label = Label(root, text="Select Continent:", font=("Arial", 14))
continent_label.pack(pady=10)
continent_menu = ttk.Combobox(root, textvariable=continent_var, font=("Arial", 12), state="readonly", width=20)
continent_menu['values'] = ['Asia', 'Australia', 'Africa', 'America', 'Europe']
continent_menu.pack(pady=10)
continent_menu.bind('<<ComboboxSelected>>', update_countries)

# Country Selection
country_var = StringVar()
country_label = Label(root, text="Select Country:", font=("Arial", 14))
country_label.pack(pady=10)
country_menu = ttk.Combobox(root, textvariable=country_var, font=("Arial", 12), state="readonly", width=20)
country_menu.pack(pady=10)
country_menu.bind('<<ComboboxSelected>>', lambda event: update_map_and_time())

# Time Display
clock_label = Label(root, font=("Arial", 25, "bold"))
clock_label.pack(pady=20)

root.mainloop()

输出

**GUI 窗口** - 将出现一个标题为“OPEN World”的窗口。

GUI Window

**大陆选择** - 用户从列表中选择一个大陆

Continent Selection

我们点击亚洲大陆,您可以显示四个国家/地区,现在我们点击印度

Continent Selection

它显示印度的实时时间,并且还会自动为 Google 中的此位置打开网络浏览器

GMaps

现在我们点击欧洲的葡萄牙。

Continent Selection Continent Selection

它也会打开谷歌地图。

google map

**时间显示** - 显示所选国家/地区的当前本地时间。

Time Display

**Google 地图** - 所选国家/地区的位置在 Google 地图中打开

google maps

如果您想要更多国家/地区,可以在代码中添加您的国家/地区。

python_reference.htm
广告