On 2009-11-19, Mitchell Model wrote: > I am just starting to do serious work with PyQt, having used many > other GUI/widget toolkits over the years. The rich collection of demos > and examples included in the installation -- apparently a large subset > of the ones in the Qt installation -- is impressive and very helpful. > I am surprised, however, by the absence of what to me is the canonical > demonstration, and one that I often program as my first exercise in a > new toolkit: a small drawing program. The program should offer a > palette of shapes (including lines), with the ability to place, move, > resize, delete, and duplicate a shape. Optional features like > specifying the color or size of the border and the color of the fill > are good too. Grouping, locking, anchoring lines to shapes, and Undo/ > Redo/History would be even better. > > Surely a demo like this exists somewhere? Could someone point me to > one? (I am aware of the Diagram Scene example. It has some of what I > am looking for, but apparently no way to resize shapes using the > standard maneuver of grabbing a handle or corner and dragging).
With Qt you really have two different ways you can implement a drawing program. One way is to create your own in-memory data structures and create a QWidget subclass where you paint everything yourself. Another way is to create a QGraphicsScene and populate it with QGraphicsItems. Which is best rather depends on what you want to achieve, although I think that using QGraphicsScene is easier. I present an example that does some of the things you're talking about in my PyQt book (chapter 13's Page Designer---in particular pagedesigner_ans.pyw). It uses QGraphicsScene and should be easy to extend to do all the things you mention. The book's examples can be downloaded from my web site. -- Mark Summerfield, Qtrac Ltd, www.qtrac.eu C++, Python, Qt, PyQt - training and consultancy "Rapid GUI Programming with Python and Qt" - ISBN 0132354187 _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt