uimain.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. from ui import Ui_MainWindow
  2. from PyQt5 import QtCore, QtGui, QtWidgets
  3. class MainWindow(Ui_MainWindow):
  4. """ BaangtUI : Logic implementation file for uidesign
  5. """
  6. switch_window = QtCore.pyqtSignal(str)
  7. def __init__(self):
  8. ''' Init the super class '''
  9. super().__init__()
  10. def setupUi(self, MainWindow, directory=None):
  11. ''' Setup the UI for super class and Implement the
  12. logic here we want to do with User Interface
  13. '''
  14. super().setupUi(MainWindow)
  15. self.filterButton.clicked.connect(self.filterDialog)
  16. self.row_list = []
  17. self.filters = {}
  18. def filterDialog(self):
  19. self.filter_dialog = QtWidgets.QDialog(self.centralwidget)
  20. #sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
  21. #sizePolicy.setHorizontalStretch(0)
  22. #sizePolicy.setVerticalStretch(0)
  23. #sizePolicy.setHeightForWidth(self.filter_dialog.sizePolicy().hasHeightForWidth())
  24. #self.filter_dialog.setSizePolicy(sizePolicy)
  25. self.filter_dialog.setWindowTitle("Filters")
  26. self.filter_dialog.setWindowTitle("Cleanup")
  27. self.vlay = QtWidgets.QVBoxLayout()
  28. hori = QtWidgets.QHBoxLayout()
  29. hori.setSpacing(10)
  30. add_button = QtWidgets.QPushButton("Add", self.filter_dialog)
  31. remove_button = QtWidgets.QPushButton("Remove", self.filter_dialog)
  32. save_button = QtWidgets.QPushButton("Save", self.filter_dialog)
  33. hori.addWidget(add_button)
  34. hori.addWidget(remove_button)
  35. hori.addWidget(save_button)
  36. self.vlay.addLayout(hori)
  37. self.filter_dialog.setLayout(self.vlay)
  38. add_button.clicked.connect(self.add_row)
  39. remove_button.clicked.connect(self.remove_row)
  40. save_button.clicked.connect(self.save_filters)
  41. self.filter_dialog.exec_()
  42. def add_row(self):
  43. hr = QtWidgets.QHBoxLayout()
  44. hr.setSpacing(10)
  45. cb = QtWidgets.QComboBox()
  46. cb.setMinimumSize(QtCore.QSize(200, 0))
  47. cb.setMaximumSize(QtCore.QSize(250, 16777215))
  48. cb.setStyleSheet("background-color: rgb(255, 255, 255);")
  49. line = QtWidgets.QLineEdit()
  50. line.setMinimumSize(QtCore.QSize(300, 0))
  51. line.setMaximumSize(QtCore.QSize(350, 16777215))
  52. line.setStyleSheet("background-color: rgb(255, 255, 255);")
  53. hr.addWidget(cb)
  54. hr.addWidget(line)
  55. self.vlay.addLayout(hr)
  56. self.row_list.append([cb, line, hr])
  57. def remove_row(self):
  58. if self.row_list:
  59. last = self.row_list.pop()
  60. last[0].deleteLater()
  61. last[1].deleteLater()
  62. last[2].deleteLater()
  63. def save_filters(self):
  64. filters = {}
  65. if self.row_list:
  66. for row in self.row_list:
  67. filters[row[0].currentText()] = row[1].text()
  68. self.filters = filters
  69. class MainController:
  70. def __init__(self):
  71. self.widget = QtWidgets.QWidget()
  72. self.window = QtWidgets.QMainWindow()
  73. self.main = MainWindow()
  74. def show_main(self):
  75. self.main = MainWindow()
  76. self.main.setupUi(self.window)
  77. self.window.show()
  78. if __name__ == "__main__":
  79. import sys
  80. app = QtWidgets.QApplication(sys.argv)
  81. controller = MainController()
  82. controller.show_main()
  83. sys.exit(app.exec_())