2014-01-04 3 views
0

У меня есть многочисленные линии на графике, линиям передачи данных, горизонтальной разделительной линии, месяц и день индикаторных линий и т.д. у меня есть, как правило, не вероятно, до сих пор, добавлял строки в этом моде:Python Tkinter двигаться

canvas_1.create_line(x1,y1,x2,y2) 

У меня теперь есть простая проблема. Я хочу также добавить вертикальную шкалу, чтобы показать, насколько выше и ниже нуля линия ... вполне естественна. Файл данных большой, примерно 12 000 единиц данных и растет, поэтому я все настраиваю с помощью клавиш со стрелками влево и вправо, чтобы прокручивать данные. Он отлично работает, но я еще не добавил в вертикальной шкале. Сейчас все перемещается:

canvas_1.move(ALL,x,y) 

Когда я добавляю вертикальную шкалу, я не хочу, чтобы вертикальная шкала двигалась. Я знаю, используя move (ALL), что вертикальная шкала также будет двигаться.

Что мне нужно изменить, чтобы получить вертикальный масштаб, чтобы он не двигался? Должен ли я выходить и «маркировать» все заявления create_line ???

line1 = canvas_1.create_line.... 

Если это так, когда у меня есть мегареклама строк, которые я хочу переместить, как я помещаю их в оператор перемещения. Должен ли я помещать все ярлыки в список или что? Я действительно потерял в мыслительном процессе эту концепцию.

Я fess Я все еще смотрю в полосу прокрутки, но мне еще не удалась с ними, и у меня есть чувство, что у меня все еще будет такая же проблема, с которой нужно иметь дело.

ответ

0

Метод move принимает либо идентификатор одного объекта, либо тег, который представляет собой ноль или более объектов. ALL - это встроенный тег (буквально строка "all"), которая относится ко всему на холсте.

Итак, чтобы использовать метод move без перемещения шкалы, дайте все, кроме шкалы, уникальный тег, а затем используйте этот тег для команды move.

canvas_1.create_line(x1,y1,x2,y2, tags=("lines",)) 
... 
canvas_1.move("lines") 

Для получения дополнительной информации о тегах см http://effbot.org/tkinterbook/canvas.htm#item-specifiers

+0

Вы можете использовать более тег на ход заявления или делают что триггер вы в й, у заявления двигаться? Я сейчас на Windows, и на нем нет установленного python, поэтому я не могу проверить прямо сейчас ... извините. – confused

+0

@confused: в документации указано, что для этого требуется только один тег. Что делать с документами tkinter не отображаются, но документы tcl/tk (на которых основан tkinter - см. Http://tcl.tk/man/tcl8.5/TkCmd/canvas.htm#M8), заключается в том, что вы может указывать логические выражения, такие как «(tag1 || tag2)». Итак, да, вы можете указать несколько тегов. –