当前位置: 首页 > 知识库问答 >
问题:

需要使用Tkinter和Python为km或mi创建选项

徐隐水
2023-03-14

我假设它一定是基于对象选择的某种类型的变量?

# import modules 
from tkinter import *
from geopy.geocoders import Nominatim 
from geopy import distance 

# user defined funtion 
def get_dis(): 
  try: 
      
      geolocator = Nominatim(user_agent="geoapiExercises") 
      
      place1 = geolocator.geocode(str(e1.get())) 
      place2 = geolocator.geocode(str(e2.get())) 


      Loc1_lat,Loc1_lon = (place1.latitude),(place1.longitude) 
      Loc2_lat,Loc2_lon = (place2.latitude),(place2.longitude) 

      location1=(Loc1_lat,Loc1_lon) 
      location2=(Loc2_lat,Loc2_lon) 

      res = (str(distance.distance(location1, location2).mi)+" Mi") 

      result.set(res) 
  except: 
      result.set("someting went wrong") 

# object of tkinter 
# with background set to light grey 
master = Tk() 
master.configure(bg='light grey') 
master.title("Find Distance") 

# Variable Classes in tkinter 
result = StringVar(); 


# Creating label for each information 
# name using widget Label 
Label(master, text="Start Location : " , bg = "light grey").grid(row=1, sticky=W) 
Label(master, text="End Location : " , bg = "light grey").grid(row=2, sticky=W) 

Label(master, text="Result :", bg = "light grey").grid(row=3, sticky=W) 

# Creating label for class variable 
# name using widget Entry 
Label(master, text="", textvariable=result,bg = "light grey").grid(row=3,column=1, sticky=W) 


e1 = Entry(master,width = 50) 
e1.grid(row=1, column=1) 
e2 = Entry(master,width = 50) 
e2.grid(row=2, column=1) 

# creating a button using the widget 
b = Button(master, text="Check", command=get_dis, bg = "white") 
b.grid(row=1, column=2,columnspan=2, rowspan=2,padx=5, pady=5,) 

mainloop()

使用备注编辑..我不能转过来

try: 
      
    geolocator = Nominatim(user_agent="geoapiExercises") 
      
    place1 = geolocator.geocode(str(e1.get())) 
    place2 = geolocator.geocode(str(e2.get())) 


    Loc1_lat,Loc1_lon = (place1.latitude),(place1.longitude) 
    Loc2_lat,Loc2_lon = (place2.latitude),(place2.longitude) 

    location1=(Loc1_lat,Loc1_lon) 
    location2=(Loc2_lat,Loc2_lon) 

    res = (str(distance.distance(location1, location2) .km)+" Km") 

    result.set(res) 
except: 
    result.set("someting went wrong") 

def get_dis():

    if unit.get() == 'mi':
        res = str(round(distance.distance(location1, location2).mi, 2))+" Mi"
    else:
        res = str(round(distance.distance(location1, location2).km, 2))+" km"   

粘性=w)

column=2,columnspan=2,rowspan=2,padx=5,pady=5,)mainloop()

共有1个答案

劳鹏云
2023-03-14

首先在结果行之前添加两个RadioButton:

Label(master, text="Unit :", bg="light gray").grid(row=3, sticky=W)
Label(master, text="Result :", bg = "light grey").grid(row=4, sticky=W) # changed to row 4
...
f1 = Frame(master)
f1.grid(row=3, column=1, sticky=W)
unit = StringVar(value="mi")
Radiobutton(f1, text="miles", value="mi", variable=unit, bg="light gray").pack(side="left")
Radiobutton(f1, text="km", value="km", variable=unit, bg="light gray").pack(side="left")

result = StringVar(); 
Label(master, text="", textvariable=result,bg = "light grey").grid(row=4,column=1, sticky=W) # changed to row 4

然后根据get_dis()内选择的单元调用相应的函数:

def get_dis():
    try:
        ...
        if unit.get() == 'mi':
            res = str(round(distance.distance(location1, location2).mi, 3))+" Mi"
        else:
            res = str(round(distance.distance(location1, location2).km, 3))+" km"
    ...

请注意,round(...,3)用于舍入结果,使其小数点后有3位数字。

 类似资料:
  • 问题内容: 我需要使用Python的tkinter库编写程序。 我的主要问题是我不知道如何创建计时器或类似 的时钟hh:。 我需要它来更新自身(这是我不知道该怎么做的)。 问题答案: 根窗口具有一种称为的方法,该方法可用于安排给定时间段后要调用的函数。如果该函数本身调用,则您已设置了一个自动重复事件。 这是一个工作示例: 请记住,这不能保证该功能将完全按时运行。它仅计划在给定的时间后运行作业。由于

  • 问题内容: 我正在使用Python 3.3和tkinter制作用于行人逃生模拟的GUI界面。 我已经编写了两个模拟程序,它们运行良好。但是,当尝试从主应用程序调用它们时,我陷入了困境。我希望模拟窗口出现在单独的窗口中(创建主窗口的子窗口)。 如何使用tkinter从主应用程序启动子窗口? 问题答案: 您可以通过创建的实例来创建子窗口。有关更多信息,请参见http://effbot.org/tkin

  • 问题内容: 我到处都在搜寻这个答案,但是找不到答案。我有一个与tkinter接口的python脚本(3.3)。我使用cx_freeze从中创建可执行文件,并获得了一个包含一些文件和文件夹的build文件夹。我双击.exe文件,但没有任何反应。我正在使用以下设置: 如果我只是打开我的代码并运行它,则该界面将完美运行。进行构建时,我没有收到任何错误消息(至少我看不到…顺便说一句,我该如何验证?)。关于

  • 问题内容: 如何强制Tkinter应用程序窗口中的列具有相等的宽度? tkdocs网站的状态如下: 每列的宽度(或每行的高度)取决于列或行中包含的小部件的宽度或高度。这意味着在草绘用户界面并将其划分为行和列时,您无需担心每个列或行的宽度[或大概高度]相等。 http://www.tkdocs.com/tutorial/grid.html 但是我 希望 这些列的宽度相等,最好使 所有 列的宽度取决于

  • 本文向大家介绍Python中使用Tkinter模块创建GUI程序实例,包括了Python中使用Tkinter模块创建GUI程序实例的使用技巧和注意事项,需要的朋友参考一下 使用Tkinter模块来创建简单的GUI程序。 Tkinter的Widgets有:Button、Canvas、Checkbutton、Entry、Frame、Label、Listbox、Menu、Menubutton、Messa