您可以轻松地使用哪些与Python相关的代码(PyGTK,Glade,Tkinter,PyQT,wxPython,Cairo,...)来创建GUI来执行以下部分或全部操作?
答案 0 :(得分:2)
PyQt附带的DiagramScene Eaxmple实现了您想要的大部分功能。它有一个固定的背景网格,你可以创建一个矩形对象,但它不可调整大小,也不会捕捉到网格。
这个SO article有关于使用鼠标调整图形对象大小的建议。它适用于C ++ Qt,但该技术应该很容易在PyQt中复制。
对于对齐网格,我认为没有任何内置功能。您可能需要重新实现itemChange(GraphicsItemChange change,const QVariant& value)函数。伪代码:
if (object not possitioned exactly on the grid):
(possition the item on the grid)
重新定位项目会导致itemChange再次被调用,但这没关系,因为该项目将被正确放置并且不会再次移动,因此您不会陷入无限循环。
答案 1 :(得分:0)
这些行动并不那么困难。你真正需要的只是命中检测,这并不难(光标在正确的区域上?好吧,然后执行操作)。更难的部分是为正在使用的工具包找到合适的画布小部件。
答案 2 :(得分:0)
我正在寻找这样的事情,最后设法用Python wx
制作一个“最小”的工作示例,利用wx.lib.ogl
及其Diagram
和{{ 1}}类。代码(如下)产生如下结果:
注意:
ShapeCanvas
的功能ogl
ogl
是否允许将该锚点更改为,例如,左下角)< / LI>
该示例使用ogl
类来执行自己的绘图,并从MyPanel
和ogl.ShapeCanvas
继承(尽管可以删除带有wx.Panel
的mixin,并且代码仍然可以正常工作) - 然后将其添加到wx.Panel
。请注意一些注意事项的代码注释(例如使用wx.Frame
阻止所有关键事件,除非首先在该窗口小部件上执行ogl.ShapeCanvas
。
代码:
SetFocus