PyQt: Verbinden zweier PushButtons per Klick

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
egge
User
Beiträge: 5
Registriert: Mittwoch 23. Juli 2003, 15:02

Mittwoch 19. November 2003, 14:42

Hi!!!

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

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 :lol: :
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 ()
Antworten