在左側有一個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