-2
我正在開發的程序今天早些時候正確運行。我所做的唯一改變就是嘗試並最終讓程序設置好,以便放大畫布的中心而不是畫布的左邊緣。在這個過程中,我開始注意到在程序中發生了什麼問題。絕對錶現得很怪異。當經度在0到-99.999999之間時,左下角的經度標籤正確更新,否則如果是-100或更小,更新經度非常慢。我決定嘗試縮小問題範圍,並將打印(px)插入到程序中,並發現它工作正常,它只是沒有更新的標籤。在得到其他幾項工作後,我回來了,仍然無法弄清楚。下面的代碼來自程序,完全符合我在完整程序中看到的內容。當你向西/遠離-100時,標籤不會及時更新,就像它向東進一步一樣。 Latitude標籤在屏幕上的任何位置都可以更新,不出所料,它會超過100或低於-100。我如何糾正這一點,並保持其他一切正常工作。Tkinter標籤未更新,應該是
import tkinter as tk
from tkinter import *
from tkinter import Tk
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.canvas = tk.Canvas(self, background="black", width=714, height=714)
self.canvas.pack(fill="both", expand=True)
self.longitudecenter = -95.767018
self.latitudecenter = 38.956862
self.p = 58.5
global v
global w
s = Frame(self, width=150, height=20)
s.pack_propagate(0)
s.place(x=0,y=695)
v = Label(s, fg='black',anchor='w')
v.pack()
t = Frame(self, width=150, height=20)
t.pack_propagate(0)
t.place(x=150,y=695)
w = Label(t, fg='black',anchor='w')
w.pack()
parent.bind("<Motion>", self.on_motion)
self.canvas.focus_set()
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)
print(px)
if len(str(px)) == 9:
v.config(text = "Longitude: " + str(px))
if len(str(px)) == 8:
v.config(text = "Longitude: " + str(px) + '0')
if len(str(px)) == 7:
v.config(text = "Longitude: " + str(px) + '00')
if len(str(px)) == 6:
v.config(text = "Longitude: " + str(px) + '000')
if len(str(px)) == 5:
v.config(text = "Longitude: " + str(px) + '0000')
if len(str(py)) == 9:
w.config(text = "Latitude: " + str(py))
if len(str(py)) == 8:
w.config(text = "Latitude: " + str(py) + '0')
if len(str(py)) == 7:
w.config(text = "Latitude: " + str(py) + '00')
if len(str(py)) == 6:
w.config(text = "Latitude: " + str(py) + '000')
if len(str(py)) == 5:
w.config(text = "Latitude: " + str(py) + '0000')
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()
我從來沒有改變任何事情,直到今天早上從來沒有問題。奇怪,但確實消除了這個問題。當我從一個完整的經度變成一個十進制的經度時,它可能會導致公式的答案發出一個更大的數字,導致呃逆的發生。奇怪的。我肯定不能想出任何其他推理來改變這種狀況。 – confused