我正试图用pythontkinter和Canvas
创建一张意大利所有城市的地图。
我在网上找到了一张意大利地图,上面有几个突出显示的城市,然后把它插入了我的Canvas
。之后,我使用一个函数来确定两个突出显示的城市的画布坐标:
import tkinter as tk
class Map():
#Creator-Function
def __init__(self,parent):
self.canvas=tk.Canvas(width=995,height=971,bg='black')
self.canvas.pack(expand=0,fill='none')
self.gif=tk.PhotoImage(file='mapOfItl.gif')
self.canvas.create_image(497.5,485.5, image = self.gif)
self.canvas.bind('<Button-1>',self.callback)
#Event on mouse-click function
def callback(self,event):
print(self.long,self.lat,event.x,971-event.y)#lat increases opposite to canvas' y coordinate
root=tk.Tk()
app=Map(root)
root.mainloop()
例如,我点击罗马,得到x=250y=150 米兰得到x=125 y=450
请注意,这些不是原始数字。
然后我搜索了米兰的地理坐标,找到了:米兰的纬度=40.100,经度=19.870,罗马的纬度=39.850,经度=21.975(这里我再次使用随机数)
之后,通过减去米兰和罗马的经度/纬度和画布坐标(x=经度,y=纬度),我能够找到经度和纬度上的1个画布像素分别与画布宽度和画布高度的值,我所要做的就是添加一个额外的数:
相应的经度。你知道吗
所以我在画布上计算城市纬度的函数是:
def callback(self,event):
self.lat=event.y*0.1166666...+39.575
self.long=.....
不过,该计划似乎适用于米兰和罗马之间的每个城市:
我的思维过程有问题吗,或者地图的比例有问题吗? 有没有什么特别的模块,你会推荐(我试图寻找这样一个模块,但找不到任何画布gif的应用程序),有没有办法解决这个问题,而不必安装一个额外的模块?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐