Ich hab da folgendes Problem und würde mich sehr freuen, wenn mir da jemand weiter helfen könnte!

Also; Ich möchte zwei Glyphen miteinander verbinden. Beide Glyphen haben Pushbuttons. Es soll ein Pushbutton geklickt werden und sobald ein zweiter Click auf einen anderen Pushbutton folgt, soll zwischen den beiden eine einfache Linie gezeichnet werden.
Für Profis, denen die Verbindung zu einfach ist und Herausforderungen suchen

Später soll die Linie sich an die Bewegung der Glyphen anpassen. D.h. wenn ein Glyph bewegt wird, soll die Linie an dem Glyphen kleben bleiben.
Vielen Dank schon mal im voraus.
Gruss
Egge
Code: Alles auswählen
import sys, string
from qt import *
from qtcanvas import *
class Hauptfenster (QMainWindow):
def __init__ (self, *args):
apply (QMainWindow.__init__, (self, ) + args)
self.resize (1024, 768)
self.canvas = QCanvas (4000, 4000)
self.canvas.setBackgroundColor (QColor (Qt.blue))
self.canvas.setAdvancePeriod (30)
self.editor = QCanvasView (self.canvas, self)
self.editor.setVScrollBarMode (QCanvasView.AlwaysOn)
self.editor.setHScrollBarMode (QCanvasView.AlwaysOn)
self.editor.resizeContents (4000, 4000)
self.workspace = self.editor.viewport ()
self.setCentralWidget (self.editor)
self.beispiele = QPopupMenu (self)
self.menuBar().insertItem ('&Beispiele', self.beispiele)
self.beispiele.insertItem ('&Frame', self.frame, Qt.Key_F10)
def frame (self):
self.glyph = Glyph (self.workspace)
self.editor.addChild (self.glyph)
self.glyph.show ()
def slotZeichnen (self):
li = QCanvasLine (self.canvas)
li.setPoints (100, 101, 200, 201)
li.setZ (127)
li.show ()
class Glyph (QFrame):
def __init__ (self, *args):
apply (QFrame.__init__, (self, ) + args)
self.setGeometry (QRect (90, 110, 200, 160))
self.setFrameShape (QFrame.StyledPanel)
self.setFrameShadow (QFrame.Raised)
self.PushButton1 = QPushButton (self)
self.PushButton1.setGeometry (QRect (10, 10, 40, 30))
self.PushButton1.setText ('OK 1')
self.PushButton2 = QPushButton (self)
self.PushButton2.setGeometry (QRect (150, 120, 40, 30))
self.PushButton2.setText ('OK 2')
self.setMouseTracking (0)
def mousePressEvent (self, ev):
if ev.button () != Qt.LeftButton:
return
self.xold = ev.globalX ()
self.yold = ev.globalY ()
def mouseMoveEvent (self, ev):
if ev.state () != Qt.LeftButton:
return
dx = ev.globalX () - self.xold
dy = ev.globalY () - self.yold
self.move (self.x () + dx, self.y () + dy)
self.xold = ev.globalX ()
self.yold = ev.globalY ()
if __name__ == '__main__':
a = QApplication (sys.argv)
hf = Hauptfenster ()
hf.show ()
a.connect (a, SIGNAL ('lastWindowClosed ()'), a, SLOT ('quit ()'))
a.exec_loop ()