How do you draw a grid and rectangles in Python?

What Python-related code (PyGTK, Glade, Tkinter, PyQT, wxPython, Cairo, ...) could you easily use to create a GUI to do some or all of the following?

  1. Part of the GUI has an immovable square grid.
  2. The user can press a button to create a resizable rectangle.
  3. The user can drag the rectangle anywhere on the grid, and it will snap to the grid.
7
задан Winston C. Yang 21 August 2010 в 20:09
поделиться

2 ответа

DiagramScene Eaxmple, поставляемый с PyQt, реализует большую часть необходимых вам функций. Он имеет фиксированную фоновую сетку, вы можете создать прямоугольный объект, но его размер нельзя изменить и он не привязан к сетке.

В этой статье SO есть советы по изменению размеров графических объектов с помощью мыши. Это для C ++ Qt, но эту технику должно быть легко воспроизвести в PyQt.

Я не думаю, что для привязки к сетке есть какие-либо встроенные функции. Возможно, вам потребуется повторно реализовать функцию itemChange (изменение GraphicsItemChange, const QVariant & value). Псевдокод:

if (object not possitioned exactly on the grid):
    (possition the item on the grid)

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

2
ответ дан 7 December 2019 в 18:38
поделиться

Эти действия не так уж и сложны. Все, что вам действительно нужно для этого, - это обнаружение попаданий, что несложно (находится ли курсор в нужной области? Хорошо, тогда выполните операцию). Сложнее всего найти подходящий виджет холста для используемого инструментария.

0
ответ дан 7 December 2019 в 18:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: