Ich hab da folgendes Problem und würde micht sehr freuen, wenn mir jemand weiter helfen könnte! Bin schon am verzweifeln!
Problem:
Ich hab eine Oberfläche geschaffen, wo man soviele Vierecke erstellen kann, wie man möchte. Diese Vierecke kann man auf dieser Oberfläche hin und her bewegen. Später werden diese Vierecke, je nachdem wie der Benutzer es will, mit Linien verbunden (geht hier noch nicht). Diese Linien werden QCanvasLine-Objekte sein (deshalb der QCanvasView).
Ich möchte jetzt eine Funktion einbauen, wo ich diese Vierecke bzw. später auch die Verbindungen dazu, ausdrucken kann. Leider hab ich es bis jetzt nur für die Linien bzw QCanvas-Objekte geschafft, die Vierecke werden überhaupt nicht gedruckt.
Wer kann mir da weiter helfen??? Aus der Dokumentation werde ich nicht schlau
Code:
Code: Alles auswählen
import sys
from qt import *
from qtcanvas import *
class MainWindow (QMainWindow):
def __init__ (self):
QMainWindow.__init__ (self)
self.resize (1024, 768)
self.canvas = QCanvas (4000, 4000)
self.canvas.setBackgroundColor (QColor (Qt.blue))
self.canvas.setAdvancePeriod (30)
self.editor = Editor (self.canvas, self)
self.editor.resizeContents (4000, 4000)
self.workspace = self.editor.viewport ()
self.setCentralWidget (self.editor)
self.file = QPopupMenu (self)
self.menuBar().insertItem ('Datei', self.file)
self.file.insertItem ( 'Drucken', self.printing)
self.file.insertItem('Beenden',qApp,SLOT('closeAllWindows ()'))
self.widget = QPopupMenu (self)
self.menuBar().insertItem ('Glyphen', self.widget)
self.widget.insertItem ('Glyph erstellen', self.makeWidget)
def printing (self):
pass
def makeWidget (self):
self.glyph = Glyph (self.workspace, self)
self.glyph.setGeometry (QRect (0, 0, 100, 100)
self.editor.addChild (self.glyph)
self.glyph.show ()
class Glyph (QFrame):
def __init__ (self, workspace, mainWindow):
QFrame.__init__ (self, workspace)
self.setFrameShape (QFrame.StyledPanel)
self.setFrameShadow (QFrame.Raised)
def mousePressEvent (self, ev):
if ev.button () == Qt.RightButton:
return
self.xold = ev.globalX (9
self.yold = ev.globalY ()
def mouseMoveEvent (self, ev):
if ev.state () == Qt.RightButton:
retrurn
dx = ev.globalX () - self.xold
dy = ev.globalY () - self.yold
x = y = mainWindow.editor.setCoordinates (self.x (), self.y ())
if x < 0:
self.move (0, self.y () + dy)
elif y < 0:
self.move (self.x () + dx, 0)
else:
self.move (self.x () + dx, self.y () + dy)
self.xold = ev.globalX ()
self.yold = ev.globalY ()
class Editor (QCanvasView):
def __init__ (self, canvas, mainWindow):
QCanvasView.__init__ (self, canvas, mainWindow)
def setCoordinates (self, x, y):
newX, newY = self.viewportToContents (int (x), int (y))
return newX, newY
if __name__ == '__main__':
app = QApplication (sys.argv)
mw = MainWindow ()
app.connect (app, SIGNAL ('lastWindowClosed ()'), app, SLOT ('quit ()'))
app.exec_loop ()
egge