新手,一个简短的Pyhton程序,报错。哪位老司机能解决?
有请各位老司机指教!
1.程序功能:“根据用户输入的IP地址,自动查询IP所对应的城市和国家。”
2.程序代码:
class FindLocation(object):
def __init__(self):
self.gi = pygeoip.GeoIP("./GeoLiteCity.dat")
self.root = tkinter.Tk()
self.root.title("全球定位IP位置(离线版)")
self.ip_input = tkinter.Entry(self.root, width=30)
self.display_info = tkinter.Listbox(self.root, width=50)
self.result_button = tkinter.Button(self.root, command=self.find_position, text="查询")
def gui_arrange(self):
self.ip_input.pack()
self.display_info.pack()
self.result_button.pack()
def find_position(self):
self.ip_addr = self.ip_input
aim = self.gi.record_by_name(self.ip_addr)
try:
city = aim["city"]
country = aim["country_name"]
region_code = aim["region_code"]
longitude = aim["longitude"]
latitude = aim["latitude"]
except:
pass
the_ip_info = ["所在纬度:"+str(latitude), "所在经度:"+str(longitude), "地域代号:"+str(region_code), "所在城市:"+str(city), "所在国家地区:"+str(country), "需要查询的ip:"+str(self.ip_addr)]
for item in range(10):
self.display_info.insert(0, "")
for item in the_ip_info:
self.display_info.insert(0, item)
return the_ip_info
def main():
FL = FindLocation()
FL.gui_arrange()
tkinter.mainloop()
pass
if __name__ == "__main__":
main()
3.程序报错:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1702, in __call__
return self.func(*args)
File "D:/codeing python3/gdal t.py", line 24, in find_position
aim = self.gi.record_by_name(self.ip_addr)
File "C:\ProgramData\Anaconda3\lib\site-packages\pygeoip\__init__.py", line 561, in record_by_name
addr = self._gethostbyname(hostname)
File "C:\ProgramData\Anaconda3\lib\site-packages\pygeoip\__init__.py", line 394, in _gethostbyname
return socket.gethostbyname(hostname)
TypeError: gethostbyname() argument 1 must be str, bytes or bytearray, not Entry
4.请问老司机2个问题:
(1)出错是什么问题?
(2)请直接帮修改一下。