Skip to content
Snippets Groups Projects
port_button.py 1.31 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    import sys
    
    from PyQt5.QtWidgets import QPushButton, QMenu
    from PyQt5.QtCore import Qt, pyqtSignal
    
    class PortButton(QPushButton):
        connectionRequested = pyqtSignal(QPushButton)
        moved = pyqtSignal()
        def __init__(self, name, operation, window, parent=None):
            self.pressed = False
            self.window = window
            self.operation = operation
            self.clicked = 0
            super(PortButton, self).__init__(name, operation)
    
        def contextMenuEvent(self, event):
            menu = QMenu()
            menu.addAction("Connect", lambda: self.connectionRequested.emit(self))
            menu.exec_(self.cursor().pos())
    
        def mousePressEvent(self, event):
            
            if event.button() == Qt.LeftButton:
                self.clicked += 1
                if self.clicked == 1:
                    self.setStyleSheet("background-color: grey")
                    self.pressed = True
                    self.window.pressed_ports.append(self)
                elif self.clicked == 2:
                    self.setStyleSheet("background-color: white")
                    self.pressed = False                
                    self.clicked = 0
                    self.window.pressed_ports.remove(self)
            super(PortButton, self).mousePressEvent(event)
                
        def mouseReleaseEvent(self, event):
            super(PortButton, self).mouseReleaseEvent(event)