你如何在Python中绘制网格和矩形?

Win*_*ang 7 python user-interface pygtk glade tkinter

您可以轻松地使用与Python相关的代码(PyGTK,Glade,Tkinter,PyQT,wxPython,Cairo,...)来创建GUI来执行以下部分或全部操作?

  1. GUI的一部分具有不可移动的方格.
  2. 用户可以按下按钮来创建可调整大小的矩形.
  3. 用户可以将矩形拖动到网格上的任何位置,它将捕捉到网格.

Sim*_*bbs 2

PyQt 附带的DiagramScene Eaxmple 实现了您想要的大部分功能。它有一个固定的背景网格,您可以创建一个矩形对象,但它不能调整大小,也不能捕捉到网格。

这篇SO 文章提供了有关使用鼠标调整图形对象大小的建议。它适用于 C++ Qt,但该技术应该很容易在 PyQt 中复制。

对于对齐网格,我认为没有任何内置功能。您可能需要重新实现 itemChange(GraphicsItemChange change, const QVariant &value) 函数。伪代码:

if (object not possitioned exactly on the grid):
    (possition the item on the grid)
Run Code Online (Sandbox Code Playgroud)

重新定位该项目将导致 itemChange 再次被调用,但这没关系,因为该项目将被正确定位并且不会再次移动,因此您不会陷入无限循环。