Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from PyQt5.QtCore import QObject, QRect
- from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QAction, qApp, QPushButton, QLineEdit, QGridLayout, QSpacerItem, QSizePolicy, QCheckBox, QTimeEdit, QToolButton, QLabel, QTextEdit, QWidgetItem
- from PyQt5.QtGui import QIcon
- class GUI(QWidget):
- #Problem Widgets
- #
- Widgets = [0]
- WTextEdits = []
- def __init__(self):
- super().__init__()
- self.initUI()
- def initUI(self):
- #grid layout
- self.widget = QWidget(self)
- self.ProblemLayout = QGridLayout(self.widget)
- self.ProblemLayout.setHorizontalSpacing(2)
- self.ProblemLayout.setVerticalSpacing(13)
- self.widget.setGeometry(QRect(10, 60, 490, 790))
- #Buttons
- btnAdd = QPushButton('Add', self)
- btnAdd.setGeometry(30, 10, 60, 40)
- btnAdd.clicked.connect(self.AddProblem)
- btnADel = QPushButton('Del All', self)
- btnADel.setGeometry(100, 10, 60, 40)
- btnADel.clicked.connect(self.DelAllProblem)
- #Window
- self.setGeometry(500, 150, 1000, 800)
- self.setWindowTitle('Planner')
- self.setWindowIcon(QIcon('images/icon/icon.png'))
- self.show()
- def UpdateProblem(self):
- self.widget.hide()
- for i in reversed(range(self.ProblemLayout.count())):
- if type(self.ProblemLayout.itemAt(i)) == QWidgetItem:
- widgetToRemove = self.ProblemLayout.itemAt(i).widget()
- # remove it from the layout list
- self.ProblemLayout.removeWidget(widgetToRemove)
- # remove it from the gui
- widgetToRemove.setParent(None)
- elif type(self.ProblemLayout.itemAt(i)) == QSpacerItem:
- ItemToRemove = self.ProblemLayout.itemAt(i)
- self.ProblemLayout.removeItem(ItemToRemove)
- spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
- GUI.Widgets.append(spacerItem)
- if len(GUI.Widgets) > 1:
- for i, widgets in enumerate(GUI.Widgets[:-1]):
- for j, widget in enumerate(widgets):
- self.ProblemLayout.addWidget(widget, i, j)
- self.ProblemLayout.addItem(GUI.Widgets[-1], len(GUI.Widgets), 1)
- self.widget.show()
- def HideTextEdit(self):
- for widget in GUI.WTextEdits:
- for x in widget:
- x.hide()
- def ShowTextEdit(self):
- self.HideTextEdit()
- target = self.sender()
- for i, widget in enumerate(GUI.Widgets[:-1]):
- if target in widget:
- for elem in GUI.WTextEdits[i]:
- elem.show()
- return
- def AddProblem(self):
- if len(GUI.Widgets) <= 21:
- self.Label = QLabel(f'{len(GUI.Widgets)}.', self)
- self.CheckBox = QCheckBox(self)
- self.lineEditP = QLineEdit(self)
- self.TimeEdit = QTimeEdit(self)
- self.btnP = QPushButton('More', self)
- self.btnP.clicked.connect(self.ShowTextEdit)
- self.ToolBtn = QToolButton(self)
- self.TextEdit = QTextEdit(self)
- self.TextEdit.setGeometry(QRect(510, 70, 480, 380))
- self.btnEdit = QPushButton('Edit', self)
- self.btnEdit.setGeometry(830, 450, 75, 20)
- self.btnHide = QPushButton('Hide', self)
- self.btnHide.setGeometry(915, 450, 75, 20)
- GUI.Widgets.append([self.Label, self.CheckBox, self.lineEditP, self.TimeEdit, self.btnP, self.ToolBtn])
- GUI.WTextEdits.append([self.TextEdit, self.btnEdit, self.btnHide])
- del GUI.Widgets[-2]
- self.UpdateProblem()
- #else:
- def DelAllProblem(self):
- GUI.Widgets.clear()
- self.HideTextEdit()
- GUI.WTextEdits.clear()
- self.UpdateProblem()
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- gui = GUI()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement