Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 14360

Using Geopy to place (tkintermapview) Markers on Addresses that are pulled from a Spreadsheet

$
0
0

I am attempting to get Addresses from a Spreadsheet..Convert those Addresses to Latitude and Longitude..Then Add Markers to those Coordinates on a TkinterMapView Map.

I used openpyxl to make a Workbook:

wB = load_workbook('HoldingCats(1).xlsx')wS = wB.activecolumn_b = wS['B']

Loop through the Workbook and print out Addresses. Setting the cells in "Column B" as function AddressCellB:

column_b = wS['B']for cell in column_b:    AddressCellB = cell.value    print(AddressCellB)

Which all works fine and prints the addresses out...

But When I attempt to run function AddressCellB in .geocode() to get .address, .latitude, and .longitude...

for cell in column_b:    AddressCellB = cell.value    print(AddressCellB)    loc = Nominatim(user_agent="Jimmy Wilson")    getLoc = loc.geocode(AddressCellB, timeout=None)contactName = getLoc.addresslat1 = getLoc.latitudelong1 = getLoc.longitude Marker1 = MAP.set_marker( lat1, long1, contactName)

I get an error:

    lat1 = getLoc.latitude           ^^^^^^^^^^^^^^^AttributeError: 'NoneType' object has no attribute 'address'

Am I approaching this weird?

Why wont the AddressCellB function return .address, .latitude, .longitude from .geocode()?

Is there a better way to pull the list of Addresses from Spreadsheet, Covert Addresses to Coordinates, and establish a Marker (in tkintermapview) for each Address?

TRACEBACK:

Traceback (most recent call last):   File "/Users/jawn/Desktop/EXcel/Excel2Me.py", line 377, in <module>    contactName = getLoc.address                  ^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'address'

DISCUSSED CODE:

wB = load_workbook('HoldingCats(1).xlsx')wS = wB.activecolumn_b = wS['B']for cell in column_b:    AddressCellB = cell.value    print(AddressCellB)    loc = Nominatim(user_agent="Jimmy Wilson")    getLoc = loc.geocode(AddressCellB, timeout=None)contactName = getLoc.addresslat1 = getLoc.latitudelong1 = getLoc.longitude Marker1 = MAP.set_marker( lat1, long1, contactName)

FULL CODE:

import customtkinter as ctkimport tkinter as tkfrom tkinter import *from tkinter import ttkfrom tkintermapview import TkinterMapViewfrom PIL import Image, ImageTkfrom CTkSpinbox import *import openpyxlfrom openpyxl.workbook import Workbookfrom openpyxl import load_workbookfrom geopy.geocoders import Nominatimimport googlemapsfrom datetime import datetimeWholeApp = ctk.CTk()WholeApp.title("Locations!")WholeApp.geometry("1400x900")#  DEF  ##############################################def slide(e):    MAP.set_zoom(Map_Slider.get())def mutton():    MAP.set_address(mapEntry.get())def theme_stuff():    passdef load_SetData():    path = "LocationsMM.xlsx"    workbook = openpyxl.load_workbook(path)    sheet = workbook.active    list_values = list(sheet.values)    for col_name in list_values[0]:        SetTreeView.heading("#1", text="Set")        SetTreeView.heading("#2", text="Business")        SetTreeView.heading("#3", text="Address")        SetTreeView.heading("#4", text="Shoot Date")        SetTreeView.heading("#5", text="BG Count")        SetTreeView.heading("#6", text="Notes")        #SetTreeView.heading(col_name, text=col_name)    for value_tuple in list_values[1:]:        SetTreeView.insert('', tk.END, values=value_tuple)def load_HolCatData():    path2 = "HoldingCats(1).xlsx"    workbook2 = openpyxl.load_workbook(path2)    sheet2 = workbook2.active    list_values2 = list(sheet2.values)    for col_name2 in list_values2[0]:        HolCatTreeView.heading("#1", text ="Name")        HolCatTreeView.heading("#2", text ="Address")        HolCatTreeView.heading("#3", text ="Contact")        HolCatTreeView.heading("#4", text ="SQFT")        HolCatTreeView.heading("#5", text ="$$$")    for value_tuple2 in list_values2[1:]:        HolCatTreeView.insert('',tk.END, values = value_tuple2)def calc():    calcRoot = ctk.CTk()    calcRoot.title("Something Doesnt Add Up")    calcEntry = ctk.CTkEntry(calcRoot, width=150, height=50)    calcEntry.grid(row=0, column=0, pady=5, padx=5, columnspan=3)    button_1 = ctk.CTkButton(calcRoot, text="1", corner_radius=50 ,width=30, height=30)    button_1.grid(row=1, column=0, pady=3, padx=3)    button_2 = ctk.CTkButton(calcRoot, text="2", corner_radius=50 ,width=30, height=30)    button_2.grid(row=1, column=1, pady=3, padx=3)    button_3 = ctk.CTkButton(calcRoot, text="3", corner_radius=50 ,width=30, height=30)    button_3.grid(row=1, column=2, pady=3, padx=3)    button_4 = ctk.CTkButton(calcRoot, text="4", corner_radius=50 ,width=30, height=30)    button_4.grid(row=2, column=0, pady=3, padx=3)    button_5 = ctk.CTkButton(calcRoot, text="5", corner_radius=50 ,width=30, height=30)    button_5.grid(row=2, column=1, pady=3, padx=3)    button_6 = ctk.CTkButton(calcRoot, text="6", corner_radius=50 ,width=30, height=30)    button_6.grid(row=2, column=2, pady=3, padx=3)    button_7 = ctk.CTkButton(calcRoot, text="7", corner_radius=50 ,width=30, height=30)    button_7.grid(row=3, column=0, pady=3, padx=3)    button_8 = ctk.CTkButton(calcRoot, text="8", corner_radius=50 ,width=30, height=30)    button_8.grid(row=3, column=1, pady=3, padx=3)    button_9 = ctk.CTkButton(calcRoot, text="9", corner_radius=50 ,width=30, height=30)    button_9.grid(row=3, column=2, pady=3, padx=3)    button_E = ctk.CTkButton(calcRoot, text="=", corner_radius=50 ,width=30, height=30)    button_E.grid(row=4, column=0, pady=3, padx=3)    button_0 = ctk.CTkButton(calcRoot, text="0", corner_radius=50 ,width=30, height=30)    button_0.grid(row=4, column=1, pady=3, padx=3)    button_S = ctk.CTkButton(calcRoot, text="-", corner_radius=50 ,width=30, height=30)    button_S.grid(row=4, column=2, pady=3, padx=3)#  LABEL  #LocationsLabel = ctk.CTkLabel(WholeApp,                          text="Locations!",                         font=("cochin", 55),                         text_color="white",                         )LocationsLabel.grid(row=0, column=1, pady=2, padx=2)# THEME COMBO #theme_change = ctk.CTkComboBox(WholeApp, values=["Dark", "Light", "Sports", "Elmo"], command=theme_stuff)theme_change.grid(row=0, column=0, pady=5, padx=5)# Excel Combo #def ExcelFileChoice():    passexcel_combo = ctk.CTkComboBox(WholeApp, values = ["Set", "HolCat"], command=ExcelFileChoice)excel_combo.grid(row=0, column=2, pady=2, padx=2)#  TAB FRAME1  ###############################################  SEARCH TAB #TabFrame1=ctk.CTkTabview(WholeApp,                         width=55,                        height=300,                        corner_radius=10,                          border_width=1,                        segmented_button_selected_color="teal",                        segmented_button_selected_hover_color="gray",                        text_color="black"                    )TabFrame1.grid(row=1, column=0, pady=5, padx=(50,1))Tab_search = TabFrame1.add("Search")SetSearch = ctk.CTkEntry(Tab_search,                              width=185,                             placeholder_text="set",                             font=('cochin', 15),                             corner_radius=10,                             border_width=1,                             )SetSearch.insert(0, "Set")SetSearch.bind("<FocusIn>", lambda e: SetSearch.delete('0', 'end'))SetSearch.grid(row=0, column=0, columnspan=2, pady=3, padx=5)BusinessSearch = ctk.CTkEntry(Tab_search,                              width=185,                             placeholder_text=("Address"),                             font=('cochin', 15),                             corner_radius=10,                             border_width=1,                             )BusinessSearch.insert(0, "Business")BusinessSearch.bind("<FocusIn>", lambda e: BusinessSearch.delete('0', 'end'))BusinessSearch.grid(row=1, column=0, columnspan=2, pady=3, padx=5)AddressSearch = ctk.CTkEntry(Tab_search,                              width=185,                             placeholder_text=("Shoot Date"),                             font=('cochin', 15),                             corner_radius=10,                             border_width=1,                             )AddressSearch.insert(0, "Address")AddressSearch.bind('<FocusIn>', lambda e: AddressSearch.delete('0', 'end'))AddressSearch.grid(row=2, column=0, columnspan=2, pady=3, padx=5)ShootDateSearch = ctk.CTkEntry(Tab_search,                              width=185,                             placeholder_text=("Shoot Date"),                             font=('cochin', 15),                             corner_radius=10,                             border_width=1,                             )ShootDateSearch.insert(0, "Shoot Date")ShootDateSearch.bind('<FocusIn>', lambda e: ShootDateSearch.delete('0', 'end'))ShootDateSearch.grid(row=3, column=0, columnspan=2, pady=3, padx=5)bg_label = ctk.CTkLabel(Tab_search, text="   BG",                        font=("cochin", 15),                        text_color="white",                        )bg_label.grid(row=4, column=0)def print_label(count):    print(count)spin_var = ctk.IntVar()BGSearch = CTkSpinbox(Tab_search,                      font=("cochin", 15),                      start_value=50,                       min_value=0,                       max_value=500,                       variable=spin_var,                      command=print_label                             )BGSearch.grid(row=4, column=1, pady=3, padx=5)NotesSearch = ctk.CTkEntry(Tab_search,                              width=185,                             placeholder_text=("Notes"),                             font=('cochin', 15),                             corner_radius=10,                             border_width=1,                             )NotesSearch.grid(row=5, column=0, columnspan=2, pady=3, padx=5)SearchButton = ctk.CTkButton(Tab_search,                              font=("cochin",18),                             text="Search",                             text_color="black",                             fg_color="teal",                             corner_radius=10,                             width=100,                             hover_color="black"                             )SearchButton.grid(row=6, column=0, columnspan=2, pady=(5,5), padx=5)###############################################################  ADD TAB  #Tab_Add = TabFrame1.add("Add")SetAdd = ctk.CTkEntry(Tab_Add,                              width=185,                             placeholder_text=("Set"),                             font=('cochin', 15),                             corner_radius=10,                             border_width=1,                             )SetAdd.grid(row=0, column=0, pady=3, padx=5)SetAdd.insert(0, "Set")SetAdd.bind("<FocusIn>", lambda e: SetAdd.delete('0', 'end'))AddressAdd = ctk.CTkEntry(Tab_Add,                              width=185,                             placeholder_text=("Address"),                             font=('cochin', 15),                             corner_radius=10,                             border_width=1,                             )AddressAdd.grid(row=1, column=0, pady=3, padx=5)ShootDateAdd = ctk.CTkEntry(Tab_Add,                              width=185,                             placeholder_text=("Shoot Date"),                             font=('cochin', 15),                             corner_radius=10,                             border_width=1,                             )ShootDateAdd.grid(row=2, column=0, pady=3, padx=5)def print_label1(count1):    print(count1)spin_var1 = ctk.IntVar()BGAdd = CTkSpinbox(Tab_Add,                   start_value=50,                   min_value=0,                   max_value=500,                   variable=spin_var1,                   command=print_label1,                   font=('cochin', 15),                             )BGAdd.grid(row=3, column=0, pady=3, padx=5)NotesAdd = ctk.CTkEntry(Tab_Add,                              width=185,                             placeholder_text=("Notes"),                             font=('cochin', 15),                             corner_radius=10,                             border_width=1,                             )NotesAdd.grid(row=4, column=0, pady=3, padx=5)AddButton = ctk.CTkButton(Tab_Add,                              font=("cochin",18),                             text="Search",                             text_color="black",                             fg_color="teal",                             corner_radius=10,                             width=100,                             hover_color="black"                             )AddButton.grid(row=5, column=0, pady=(5,5), padx=5)####################################################  TOOLS TAB ######################Tab_Tools = TabFrame1.add("Tools")ButtonCalc = ctk.CTkButton(Tab_Tools,                            font=("cochin",15),                           text="Calc",                           fg_color="teal",                           corner_radius=10,                           border_color="black",                           border_width=1,                           hover_color="black",                           command=calc                             )ButtonCalc.grid(row=0, column=0, pady=5, padx=5)####################################################  EXCEL TAB FRAME ###############################################treeFrame=ctk.CTkTabview(WholeApp,                     width=800,                     height=300,                     corner_radius=10,                      border_width=1,                    )treeFrame.grid(row=1, column=1, pady=1, padx=1, columnspan=3)# SET TAB #SetTab = treeFrame.add("Set")SetScroll = ctk.CTkScrollbar(SetTab,                              button_color="teal",                              fg_color="black"                              )SetScroll.pack(side="right", fill="y")cols = ("SET", "BUSINESS", "ADDRESS", "SHOOT DATE", "BG COUNT", "NOTES")SetTreeView = ttk.Treeview(SetScroll,                        yscrollcommand=SetScroll.set,                        columns=cols,                        height=12                        )SetTreeView['show'] = 'headings'SetTreeView.column("SET", width=175)SetTreeView.column("BUSINESS", width=250)SetTreeView.column("ADDRESS", width=250)SetTreeView.column("SHOOT DATE", width=150)SetTreeView.column("BG COUNT", width=50)SetTreeView.column("NOTES", width=100)SetTreeView.pack()SetScroll.configure(command=SetTreeView.yview)load_SetData()# HolCat #HolCatTab = treeFrame.add("Holcat")HolCatScroll = ctk.CTkScrollbar(HolCatTab,                                button_color="teal",                                fg_color="black"                                )HolCatScroll.pack(side="right", fill="y")cols2 = ("NAME", "ADDRESS", "CONTACT", "SQFT", "$")HolCatTreeView = ttk.Treeview(HolCatScroll,                              yscrollcommand=HolCatScroll.set,                              columns=cols2,                              height=12                              )HolCatTreeView["show"] = 'headings'HolCatTreeView.column("ADDRESS", width=250)HolCatTreeView.column("CONTACT", width=275)HolCatTreeView.column("SQFT", width=100)HolCatTreeView.column("$", width=150)HolCatTreeView.pack()HolCatScroll.configure(command=HolCatTreeView.yview)load_HolCatData()#  MAP_FRAME  ######################mapEntryFrame=ctk.CTkTabview(WholeApp,                     width=800,                     height=200,                     corner_radius=10,                      border_width=1,                    text_color="black",                    segmented_button_selected_color="teal",                    segmented_button_selected_hover_color="gray"                    )mapEntryFrame.grid(row=2, column=0, pady=1, padx=(50,5), columnspan=3, sticky="nsew")TabMap = mapEntryFrame.add("Map")mapEntry = ctk.CTkEntry(TabMap,                        width=200,                        placeholder_text="Address",                        font=("cochin", 13),                        corner_radius=10,                        )mapEntry.grid(row=0, column=1, pady=1, padx=5, sticky="nsew")mapButton = ctk.CTkButton(TabMap,                          text="Search",                          fg_color="teal",                          font=("cochin", 13),                          text_color="black",                          corner_radius=10,                          command=mutton,                          width=100,                          hover_color="black"                          )mapButton.grid(row=0, column=0, pady=1, padx=1)MAP = TkinterMapView(TabMap,                          width=750,                         height=300,                         corner_radius=15                         )MAP.grid(row=1, column=1, pady=5, padx=5, columnspan=2)MAP.set_address("Manhattan")MAP.set_zoom(12)wB = load_workbook('HoldingCats(1).xlsx')wS = wB.activecolumn_b = wS['B']for cell in column_b:    AddressCellB = cell.value    print(AddressCellB)    loc = Nominatim(user_agent="Jimmy Wilson")    getLoc = loc.geocode(AddressCellB)contactName = getLoc.addresslat1 = getLoc.latitudelong1 = getLoc.longitude Marker1 = MAP.set_marker( lat1, long1, contactName)Map_Slider = ctk.CTkSlider(TabMap,                           from_=4,                           to=20,                           orientation=tk.VERTICAL,                           command=slide,                           button_color="teal",                           fg_color="black",                           progress_color="black",                           button_hover_color="black"                           )Map_Slider.grid(row=1, column=0, pady=5, padx=5)TabEntry = mapEntryFrame.add("Entry")ButtonEntry = ctk.CTkButton(TabEntry,                             width=100,                             text="Note",                             font=("cochin", 15),                            text_color="black",                            fg_color="teal",                            corner_radius=10,                            hover_color="black"                            )ButtonEntry.grid(row=0, column=0, pady=5, padx=5)TextBoxFrame = ctk.CTkTextbox(TabEntry,                             width=600,                             height=200,                             border_width=1,                              corner_radius=15,                            )TextBoxFrame.grid(row=0, column=1, pady=10, padx=10)WholeApp.mainloop()

Viewing all articles
Browse latest Browse all 14360

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>