Cetus Group
Cetus Logo
Информационные системы и программное обеспечение




Поддержка

 
Разработка программного обеспечения средствами языка Python и библиотеки Tkinter
Редакция 25.09.2006
А.Г. © Часть 3 - "Визуализация и редактирование данных"

В примере продолжено рассмотрение возможностей работы с графикой в Python/Tkinter.

Пример, рассмотренный выше может быть доработан таким образом, чтобы предоставить возможности редактирования графика. Для этого:
-- реализуем новый модуль с классами NewApp и NewGraph, унаследованными от App и Graph;
-- перегрузим функцию Run класса App для работы с новым графиком;
-- добавим новые функции в класс NewGraph для обеспечения перемещения точек на графике.

Полученный код представлен ниже: еще один модуль классов:

from pytk2 import *

class NewApp(App):
  def __init__(self,root,sizeX,sizeY,title):
    App.__init__(self,root,sizeX,sizeY,title)

  def Run(self):
    self.graph = NewGraph(self.root,self.sizeX,self.sizeY)
    menu = GrMenu(self.root,self.graph)
    self.graph.Run()

class NewGraph(Graph):
  def __init__(self,root,maxX,maxY):
    Graph.__init__(self,root,maxX,maxY)

  def Run(self):
    self.lastX,self.lastY = 0,0
    self.canv.tag_bind('point','<1>',self.plotDown)
    self.canv.tag_bind('point','Button-Release-1',self.bindRelease)
    self.canv.tag_bind('point','',self.plotMove)
    
  def bindRelease(self,event):
    self.canv.drag('selected')
    
  def plotDown(self,event):
    self.canv.dtag('selected')
    self.canv.addtag_withtag('selected','current')
    self.canv.tag_raise('current')
    self.lastX,self.lastY = event.x,event.y
    
  def plotMove(self,event):
    self.canv.move('selected',event.x-self.lastX,event.y-self.lastY)
    self.lastX,self.lastY = event.x,event.y
и новый главный модуль:
#!/usr/bin/python

from pytk3 import *
    
root = Tk()
app = NewApp(root,450,350,"Coords editor")
app.Run()
root.mainloop()

Перемещение точек выполняется мышью при нажатой левой кнопке. Добавить код для сохранения данных является делом техники. Выполняем, проверяем результаты.


Copyright©2005, Cetus Group : All rights reserved.