python,基于tkinter模块编写的根据经纬度计算两点间距离的应用程序

python的tkinter模块是用于编写GUI窗口程序的模块,使用起来非常方便,功能强大。基于tkinter模块,开发了一个输入两点经纬度计算输出距离(包括公里数和孤度数)的小程序,主要应用于地震台站地震报告编写。下面这段代码可以在python3.8上直接运行。

import tkinter as tk
import tkinter.messagebox
from math import radians, cos, sin, asin, sqrt

#定义由输入文本框获得台站及震源经纬度,计算距离公里数及孤度数,并在输出文本框text中输出的函数
def haversine(): # 经度1,纬度1,经度2,纬度2

    distance_km.delete(‘0.0‘,tk.END)
    distance_angle.delete(‘0.0‘,tk.END)
    lon1 = float(sta_longitude.get())
    lat1 = float(sta_latitude.get())
    lon2 = float(source_longitude.get())
    lat2 = float(source_latitude.get())
    # 将十进制度数转化为弧度
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
    # haversine公式
    dlon = lon2 - lon1
    dlat = lat2 - lat1
    a = sin(dlat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon / 2) ** 2
    c = 2 * asin(sqrt(a))
    r = 6371  # 地球平均半径,单位为公里
    km = round(c * r, 2) # 公里数
    angle = round(c * r / 111.199, 2) # 孤度数
    distance_angle.insert(‘insert‘, angle) # 在公里数文本框中输出计算结果孤度数
    distance_km.insert(‘insert‘, km) # 在孤度数文本框中输出计算结果公里数

window = tk.Tk()
window.title(‘吉林省长白山天池火山监测站地震分析专用‘)
window.geometry(‘600x400‘)
# 定义第1行内容
label1 = tk.Label(window, text = ‘台站纬度‘, font = (‘微软雅黑‘, 15))
label1.place(x=20, y=30, anchor=‘nw‘)
# 台站纬度设置成默认值
sta_lat = tk.StringVar()
sta_lat.set(‘42.0576‘)
sta_latitude = tk.Entry(window, font = (‘微软雅黑‘, 15), width = 10, textvariable = sta_lat)
sta_latitude.place(x=120, y=30, anchor=‘nw‘)
label2 = tk.Label(window, text = ‘台站经度‘, font = (‘微软雅黑‘, 15))
label2.place(x=300, y=30, anchor=‘nw‘)
# 台站经度设置成默认值
sta_lon = tk.StringVar()
sta_lon.set(‘128.0626‘)
sta_longitude = tk.Entry(window, font = (‘微软雅黑‘, 15), width = 10, textvariable = sta_lon)
sta_longitude.place(x=400, y=30, anchor=‘nw‘)
# 定义第2行内容
label3 = tk.Label(window, text = ‘震源纬度‘, font = (‘微软雅黑‘, 15))
label3.place(x=20, y=110, anchor=‘nw‘)
source_latitude = tk.Entry(window, font = (‘微软雅黑‘, 15), width = 10)
source_latitude.place(x=120, y=110, anchor=‘nw‘)
label4 = tk.Label(window, text = ‘震源经度‘, font = (‘微软雅黑‘, 15))
label4.place(x=300, y=110, anchor=‘nw‘)
source_longitude = tk.Entry(window, font = (‘微软雅黑‘, 15), width = 10)
source_longitude.place(x=400, y=110, anchor=‘nw‘)
# 定义第3行内容
label5 = tk.Label(window, text = ‘孤度数‘, font = (‘微软雅黑‘, 15))
label5.place(x=20, y=190, anchor=‘nw‘)
distance_angle = tk.Text(window, font = (‘微软雅黑‘, 15), width = 10, fg = ‘red‘, height = 1)
distance_angle.place(x=120, y=190, anchor=‘nw‘)
label6 = tk.Label(window, text = ‘公里数‘, font = (‘微软雅黑‘, 15))
label6.place(x=300, y=190, anchor=‘nw‘)
distance_km = tk.Text(window, font = (‘微软雅黑‘, 15), width = 10, fg = ‘red‘, height = 1)
distance_km.place(x=400, y=190, anchor=‘nw‘)

# 定义第4行内容
calculate = tk.Button(window, text = ‘开始计算‘, font = (‘微软雅黑‘, 15), command = haversine)

calculate.place(x=150, y=270, anchor=‘nw‘)
close_window = tk.Button(window, text = ‘关闭窗口‘, font = (‘微软雅黑‘, 15),  command = window.quit)
close_window.place(x=350, y=270, anchor=‘nw‘)

# 消息循环,显示窗口
window.mainloop()

运行并输入参数后显示如下:

原文地址:https://www.cnblogs.com/iceberg710815/p/12274370.html

时间: 2024-10-12 14:30:55

python,基于tkinter模块编写的根据经纬度计算两点间距离的应用程序的相关文章

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本。

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本.

Linux升级Python提示Tkinter模块找不到解决

一.安装tkinter 在Linux中python默认是不安装Tkinter模块, [[email protected]193 ~]# python Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2 Type "help", "copyright", "credits" or "license

Python之Tkinter模块学习

本文转载自:http://www.cnblogs.com/kaituorensheng/p/3287652.html Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口 作为实践, 用Tkinter做了个ascii码转化查询表,本文从四点介绍 产品介绍 设计规划 相关知识 源码附件 1. 产品介绍 界面 功能 通过输入字符或数字查询对应的信息 通过选择列表中的信息查询对应的信息 2. 设计规划 规划图 3. 相关知识 首先看怎么产生第一个窗口 from T

Python升级提示Tkinter模块找不到的解决方法

一.安装tkinter在Linux中python默认是不安装Tkinter模块,复制代码 代码如下:[[email protected] ~]# pythonPython 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2Type "help", "copyright", "credits" or "lice

Python 使用Socket模块编写一个简单的服务器和客户端

任务 Socket套接字开始监听后,使用accept函数来等待客户连接.这个过程在循环中无限循环,服务器处理完和客户端的连接后会再次调用accpet函数,等待下一个连接. 客户端代码 1 import socket 2 s1=socket.socket() 3 s1.bind(("127.0.0.1",2345)) 4 s1.listen(5) 5 while 1: 6 conn,address = s1.accept() 7 print("a new connect fro

Python 使用Scapy模块编写ARP主机存活扫描

代码 1 import sys 2 if len(sys.argv) != 2: 3 print("Usage:aprPing <IP>\n eg:arpPing 192.168.1.1") 4 sys.exit(1) 5 from scapy.all import srp,Ether,ARP 6 ans,unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=sys.argv[1]),timeout=3)

Python基于tkinter.messagebox实现简易消息框、对话框

库导入: import tkinter import tkinter.messagebox 有关提示框: tkinter.messagebox.showinfo(title=None, message=None) tkinter.messagebox.showwarning(title=None, message=None) tkinter.messagebox.showerror(title=None, message=None) 其中涉及到对话框如下: tkinter.messagebox.

Python 使用Scapy模块编写一个简单的扫描端口是否过滤

代码 1 from scapy.all import IP,TCP,sr 2 ans,unans=sr(IP(dst="192.168.1.128")/TCP(dport=[21,23,135,443,445],flags="A"),timeout=3) 3 for s,r in ans: 4 if s[TCP].dport == r[TCP].sport: 5 print(str(s[TCP].dport)+" is unfiltered")

iOS 地图 通过经纬度计算两点间距离

- (double)calculateStart:(CLLocationCoordinate2D)start end:(CLLocationCoordinate2D)end { double meter = 0; double startLongitude = start.longitude; double startLatitude = start.latitude; double endLongitude = end.longitude; double endLatitude = end.l