В этом коде, который я изменил из Интернета, операторы canvas.create используются для создания сетки и текста как обычно, но в функции AddPoint, которая вызывается для обновления графика, нет оператора create, поэтому я не вижукак сюжет пишется.Какое утверждение вызывает обновление сюжета?
import Tkinter, time, sys, math
from random import *
global latch
start = 50
end = 800
class HPSA:
def HPSA_grid(self): # create a grid
self.lines=[]
self.lastpos=0
self.canvas.create_rectangle(0, 0, 800, 512, fill="black")
self.canvas.create_text(25, 20, fill="red", text=str("dB"), anchor="e")
self.canvas.create_text(770, 500, fill="red", text=str("MHz"), anchor="e")
# horizontal lines
for y in range(0,480,50):
self.canvas.create_line(0, y, 800, y, fill="#444444",dash=(4, 4))
#self.canvas.create_line(0, y, 800, y, fill="red",dash=(4, 4))
self.canvas.create_text(5, y-10, fill="#999999", text=str(-y*2/10), anchor="w")
# vertical lines
for x in range(start,800,80):
self.canvas.create_line(x, 0, x, 512, fill="#444444",dash=(4, 4))
#self.canvas.create_line(x, 0, x, 512, fill=red,dash=(4, 4))
self.canvas.create_text(x+3, 500-10, fill="#999999", text=str(x/10), anchor="w")
# draw start vertical line
self.canvas.create_line(start, 0, start, 470, fill="yellow")
# draw start horizontal line
self.canvas.create_line(start, 470, 800, 470, fill="yellow")
self.lineRedraw=self.canvas.create_line(0, 800, 0, 0, fill="red")
# self.lines1text=self.canvas.create_text(800-3, 10, fill="#00FF00", text=str("TEST"), anchor="e")
for x in range(800):
self.lines.append(self.canvas.create_line(x, 0, x, 0, fill="#00FF00"))
def addPoint(self,val):
if self.xpos>start:
pass
self.canvas.coords(self.lines[self.xpos],(self.xpos-1,self.lastpos,self.xpos,val))
if self.xpos<800:
pass
#self.canvas.coords(self.lineRedraw,(self.xpos+1,val +5,self.xpos+1,val-5)) # ?? draws red line near val
self.lastpos=val
self.xpos+=1
if self.xpos==800:
self.xpos=0
self.totalPoints+=800
latch = 0
my_screen.update() # continuosly draws points
def __init__(self, my_screen):
self.xpos=start
self.line1avg=0
self.data=[0]*800
self.canvas = Tkinter.Canvas(my_screen, width=800, height=512)
self.canvas.pack()
self.totalPoints=0
self.HPSA_grid()
self.timeStart=time.time()
my_screen = Tkinter.Tk()
my_screen.wm_title("HPSA")
a = HPSA(my_screen)
my_screen.update() # draws screen immediately
k= .041
for x in range (10,800,1):
point = 250 - 250*(math.sin(k*x)/(k*x))
a.addPoint(point)