PyQt: Verbinden zweier PushButtons per Klick

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

PyQt: Verbinden zweier PushButtons per Klick

Beitragvon egge » 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 ()

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder