gui_example.py 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. import sys
  2. from PyQt5 import QtCore, QtGui, QtWidgets, QtSql
  3. from mainwindow import Ui_MainWindow
  4. from ideasxdevice import Ui_IdeasXDevice
  5. def generateMACID():
  6. import numpy as np
  7. macID = np.random.randint(255, size=5)
  8. macStr = ""
  9. for val in macID:
  10. macStr = macStr+ format(val, 'x') + ":"
  11. return macStr[:-1]
  12. def generateRSSI():
  13. import numpy as np
  14. rssi = np.random.randint(80)
  15. rssiStr = "RSSI: -" + str(rssi) + "dBm"
  16. return rssiStr
  17. def generateSOC():
  18. import numpy as np
  19. soc = np.random.randint(100)
  20. socStr = "Battery: " + str(soc) + "%"
  21. return socStr
  22. def generateStatus():
  23. import numpy as np
  24. hr = np.random.randint(12) + 1
  25. min = np.random.randint(60)
  26. ampm = np.random.randint(1)
  27. statusStr = "Last Update: " + str(hr) + ":" + str(min)
  28. return statusStr
  29. class IdeasXEncoder(QtWidgets.QWidget):
  30. def __init__(self):
  31. super(IdeasXEncoder, self).__init__()
  32. self.ui = Ui_IdeasXDevice()
  33. self.ui.setupUi(self)
  34. self.ui.labelModuleID.setText(generateMACID())
  35. self.ui.labelRSSI.setText(generateRSSI())
  36. self.ui.labelBattery.setText(generateSOC())
  37. self.ui.labelStatus.setText(generateStatus())
  38. self.ui.buttonActivate.clicked.connect(self.activateEncoder)
  39. def activateEncoder(self):
  40. if self.ui.buttonActivate.text() == "Activate":
  41. print("Activating Encoder: " + self.ui.labelModuleID.text())
  42. self.ui.buttonActivate.setText("Deactivate")
  43. else:
  44. print("Deactivating Encoder: " + self.ui.labelModuleID.text())
  45. self.ui.buttonActivate.setText("Activate")
  46. # self.widgetText = QtWidgets.QLabel(generateMACID())
  47. # self.widgetButton = QtWidgets.QPushButton("Activate")
  48. # self.layout = QtWidgets.QHBoxLayout()
  49. # self.layout.addWidget(self.widgetText)
  50. # self.layout.addWidget(self.widgetButton)
  51. # self.setLayout(self.layout)
  52. # font = QtGui.QFont()
  53. # font.setFamily("Roboto Condensed")
  54. # font.setPointSize(20)
  55. # font.setItalic(False)
  56. # self.widgetText.setFont(font)
  57. class IdeasXMainWindow(QtWidgets.QMainWindow):
  58. def __init__(self):
  59. super(IdeasXMainWindow, self).__init__()
  60. self.ui = Ui_MainWindow()
  61. self.ui.setupUi(self)
  62. #self.ui.searchEncoder.textChanged.connect(self.filterEncoders)
  63. # itemN = QtWidgets.QListWidgetItem()
  64. # widget = IdeasXEncoder()
  65. # itemN.setSizeHint(widget.minimumSize())
  66. # self.ui.listEncoder.addItem(itemN)
  67. # self.ui.listEncoder.setItemWidget(itemN, widget)
  68. #widgetLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
  69. #widget.setLayout(widgetLayout)
  70. self.widgetIndex = []
  71. self.widgetNames = []
  72. self.itemIndex = []
  73. for i in range(100):
  74. self.itemIndex.append(QtWidgets.QListWidgetItem())
  75. self.widgetIndex.append(IdeasXEncoder())
  76. itemN = self.itemIndex[i]
  77. widget = self.widgetIndex[i]
  78. itemN.setSizeHint(widget.minimumSize())
  79. #widget = IdeasXEncoder()
  80. self.ui.listEncoder.addItem(itemN)
  81. self.ui.listEncoder.setItemWidget(itemN, widget)
  82. self.widgetNames.append(widget.ui.labelModuleID.text())
  83. print("List of Encoder IDs: ")
  84. print(self.widgetNames)
  85. def generateEncoders(self):
  86. self.widgetIndex = []
  87. self.itemIndex = []
  88. for i in range(100):
  89. itemN = QtWidgets.QListWidgetItem()
  90. self.widgetIndex.append(IdeasXEncoder())
  91. widget = self.widgetIndex[i]
  92. itemN.setSizeHint(widget.minimumSize())
  93. #widget = IdeasXEncoder()
  94. self.ui.listEncoder.addItem(itemN)
  95. self.ui.listEncoder.setItemWidget(itemN, widget)
  96. #
  97. def generateEncoder(self):
  98. itemN = QtWidgets.QListWidgetItem()
  99. #self.widgetIndex.append(IdeasXEncoder())
  100. widget = IdeasXEncoder()#self.widgetIndex[-1]
  101. itemN.setSizeHint(widget.minimumSize())
  102. self.ui.listEncoder.addItem(itemN)
  103. self.ui.listEncoder.setItemWidget(itemN, widget)
  104. def clearEncoders(self):
  105. self.ui.listEncoder.clear()
  106. self.widgetIndex = []
  107. def refreshList(self):
  108. #self.clearEncoders()
  109. for widget in self.widgetIndex:
  110. widget.ui.labelBattery.setText(generateSOC())
  111. widget.ui.labelStatus.setText(generateStatus())
  112. widget.ui.labelRSSI.setText(generateRSSI())
  113. def filterEncoders(self):
  114. searchInput = self.ui.searchEncoder.text()
  115. if searchInput == "":
  116. print("Search field is clear")
  117. for item in self.itemIndex:
  118. self.ui.listEncoder.setItemHidden(item, False)
  119. else:
  120. for item in self.itemIndex:
  121. self.ui.listEncoder.setItemHidden(item, False)
  122. print("Seaching based on "+ searchInput)
  123. # hid all items
  124. # make only items in view searchable
  125. def encoderSettingsDialog(self):
  126. print("Open Settings Dialog")
  127. if __name__ == "__main__":
  128. app = QtWidgets.QApplication(sys.argv)
  129. app.setWindowIcon(QtGui.QIcon('icon/ideasx2.png'))
  130. mainWindow = IdeasXMainWindow()
  131. mainWindow.show()
  132. timer = QtCore.QTimer()
  133. timer.timeout.connect(mainWindow.refreshList)
  134. timer.start(1000)
  135. sys.exit(app.exec_())