Skip to content

Commit

Permalink
eButton off/on message configurable
Browse files Browse the repository at this point in the history
  • Loading branch information
xiaoqiangwang committed Mar 15, 2017
1 parent 1ffcf0b commit 396807a
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 4 deletions.
29 changes: 25 additions & 4 deletions epicsQt/eButton.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@


class eButton(Qt.QPushButton):
def __init__(self, parent=None, pvName=None):
def __init__(self, parent=None, pvName=None, message=(None, None)):
Qt.QPushButton.__init__(self, parent)
self.setEnabled(False)
self.setStyleSheet(css.disabled)
self._offMessage, self._onMessage = message
if pvName is not None:
self.setPV(pvName)
self.connect(self, Qt.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self, Qt.SIGNAL('pressed()'), self.buttonPressed)
self.connect(self, Qt.SIGNAL('released()'), self.buttonReleased)

def setPV(self, pv):
if isinstance(pv, str):
Expand All @@ -28,10 +30,29 @@ def getPvName(self):
def setPvName(self, name):
self.setPV(str(name))

def getOnMessage(self):
return self._onMessage

def setOnMessage(self, on):
self._onMessage = on

def getOffMessage(self):
return self._offMessage

def setOffMessage(self, off):
self._offMessage = off

pvName = Qt.pyqtProperty("QString", getPvName, setPvName)
onMessage = Qt.pyqtProperty("QString", getOnMessage, setOnMessage)
offMessage = Qt.pyqtProperty("QString", getOffMessage, setOffMessage)

def buttonPressed(self):
if self._onMessage is not None:
self.pv.array_put(self._onMessage)

def buttonClicked(self):
self.pv.array_put(1)
def buttonReleased(self):
if self._offMessage is not None:
self.pv.array_put(self._offMessage)

def connectionChanged(self, connected):
if connected:
Expand Down
4 changes: 4 additions & 0 deletions test.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ def choosePV(index):
btngrp = eButtonGroup(win, 'cabo', h=False)
layout.addWidget(btngrp)

btn = eButton(win, 'cabo', (0, 1))
btn.setText('message button')
layout.addWidget(btn)


win.show()

Expand Down

0 comments on commit 396807a

Please sign in to comment.