在左侧有一个tkinter框架用于标签,checkbuttons等。右侧是显示地图的画布。我可以在地图上滚动,它会给出当时有关鼠标指针在地图上的位置的经度/纬度坐标。我可以点击地图,它会放大地图。问题是,当我在框架中显示底层地图数据时,即使我不在画布上,但在经过/纬度变化的框架上滚动鼠标时。如果我点击框架,还没有在那里放置任何检查按钮来测试它,它就像放在画布上一样放大。将tkinter画布和框架分开
有没有什么办法可以将框架和画布的动作“感应”分开,以使它们分开。
我会张贴代码,有点冗长,但我已经离开这里,因为我已经迟到了。
编辑:
我回来了,感谢布赖恩的答复,我想我明白他在说什么做的,只是不知道如何去做。在几次尝试中似乎没有任何工作。当然,我仍然不完全确定下面代码中的(自我,父母)“寻址”方法。
另外我看到在不远的将来可能会出现很高的概率,需要能够分别引用鼠标按钮同时显示画布和框架,也可以根据所点击的位置做不同的事情。幸运的是,由于不得不早早离开这里,并且得到了Bryan的回答,我已经能够更加缩短代码,并且现在拥有的代码正在执行我正在谈论的内容。张贴代码的延迟对我有利。
import tkinter as tk
from tkinter import *
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.frame = tk.Frame(self,bg='black', width=1366, height=714)
self.frame1 = tk.Frame(self,bg='gray', width=652, height=714)
self.frame.pack()
self.canvas = tk.Canvas(self, background="black", width=714, height=714)
self.canvas.pack_propagate(0)
self.canvas.place(x=652,y=0)
self.frame1.pack_propagate(0)
self.frame1.place(x=0,y=0)
self.longitudecenter = -95.9477127
self.latitudecenter = 36.989772
self.p = 57.935628
global v
s = Canvas(self, width=150, height=20)
s.pack_propagate(0)
s.place(x=0,y=695)
v = Label(s, bg='gray',fg='black',borderwidth=0,anchor='w')
v.pack()
parent.bind("<Motion>", self.on_motion)
self.canvas.focus_set()
self.canvas.configure(xscrollincrement=1, yscrollincrement=1)
def on_motion(self, event):
self.canvas.delete("sx")
self.startx, self.starty = self.canvas.canvasx(event.x),self.canvas.canvasy(event.y)
px = -(round((-self.longitudecenter + (self.p/2))- (self.startx * (self.p/714)),5))
py = round((self.latitudecenter + (self.p/2))-(self.starty * (self.p /714)),5)
v.config(text = "Longitude: " + str(px))
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()
这是我一直在使用的一部分。我如何改变它,以便我可以分别绑定到框架和画布。现在我只需要鼠标位置就可以绑定到画布,但是将来我需要能够使用鼠标点击,甚至可以在画布和框架上单独使用鼠标位置。谁知道自从我三周前开始这个项目以来,这个项目已经发生了多大变化/进步......天空是极限)。
只是鼠标移动绑定到画布上。这听起来像你已经绑定到整个应用程序。请提供[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。我猜你只需要十几行代码来重现这种行为。 –
我更新了这个问题,并且包含了工作错误的代码,不像今天早上我刚开始发布的那些不工作的错误代码。如何分别绑定到画布和框架?我觉得需要在即将到来的时候需要绑定到两者。 – confused