Advertisement
Guest User

Untitled

a guest
Mar 27th, 2020
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.04 KB | None | 0 0
  1. import sys
  2. from PyQt5.QtCore import QObject, QRect
  3. from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QAction, qApp, QPushButton, QLineEdit, QGridLayout, QSpacerItem, QSizePolicy, QCheckBox, QTimeEdit, QToolButton, QLabel, QTextEdit, QWidgetItem
  4. from PyQt5.QtGui import QIcon
  5.  
  6. class GUI(QWidget):
  7.     #Problem Widgets
  8.     #
  9.     Widgets = [0]
  10.     WTextEdits = []
  11.  
  12.     def __init__(self):
  13.         super().__init__()
  14.         self.initUI()
  15.  
  16.     def initUI(self):
  17.         #grid layout
  18.         self.widget = QWidget(self)
  19.         self.ProblemLayout = QGridLayout(self.widget)
  20.         self.ProblemLayout.setHorizontalSpacing(2)
  21.         self.ProblemLayout.setVerticalSpacing(13)
  22.         self.widget.setGeometry(QRect(10, 60, 490, 790))
  23.  
  24.         #Buttons
  25.         btnAdd = QPushButton('Add', self)
  26.         btnAdd.setGeometry(30, 10, 60, 40)
  27.         btnAdd.clicked.connect(self.AddProblem)
  28.  
  29.         btnADel = QPushButton('Del All', self)
  30.         btnADel.setGeometry(100, 10, 60, 40)
  31.         btnADel.clicked.connect(self.DelAllProblem)
  32.        
  33.         #Window
  34.         self.setGeometry(500, 150, 1000, 800)
  35.         self.setWindowTitle('Planner')
  36.         self.setWindowIcon(QIcon('images/icon/icon.png'))
  37.  
  38.         self.show()
  39.  
  40.     def UpdateProblem(self):
  41.         self.widget.hide()
  42.         for i in reversed(range(self.ProblemLayout.count())):
  43.             if type(self.ProblemLayout.itemAt(i)) == QWidgetItem:
  44.                 widgetToRemove = self.ProblemLayout.itemAt(i).widget()
  45.                 # remove it from the layout list
  46.                 self.ProblemLayout.removeWidget(widgetToRemove)
  47.                 # remove it from the gui
  48.                 widgetToRemove.setParent(None)
  49.             elif type(self.ProblemLayout.itemAt(i)) == QSpacerItem:
  50.                 ItemToRemove = self.ProblemLayout.itemAt(i)
  51.                 self.ProblemLayout.removeItem(ItemToRemove)
  52.  
  53.         spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
  54.         GUI.Widgets.append(spacerItem)
  55.  
  56.         if len(GUI.Widgets) > 1:
  57.             for i, widgets in enumerate(GUI.Widgets[:-1]):
  58.                 for j, widget in enumerate(widgets):
  59.                     self.ProblemLayout.addWidget(widget, i, j)
  60.        
  61.         self.ProblemLayout.addItem(GUI.Widgets[-1], len(GUI.Widgets), 1)
  62.  
  63.         self.widget.show()
  64.  
  65.     def HideTextEdit(self):
  66.         for widget in GUI.WTextEdits:
  67.             for x in widget:    
  68.                 x.hide()
  69.  
  70.     def ShowTextEdit(self):
  71.         self.HideTextEdit()
  72.         target = self.sender()
  73.         for i, widget in enumerate(GUI.Widgets[:-1]):
  74.             if target in widget:
  75.                 for elem in GUI.WTextEdits[i]:
  76.                     elem.show()
  77.                 return
  78.    
  79.     def AddProblem(self):
  80.         if len(GUI.Widgets) <= 21:
  81.             self.Label = QLabel(f'{len(GUI.Widgets)}.', self)
  82.             self.CheckBox = QCheckBox(self)
  83.             self.lineEditP = QLineEdit(self)
  84.             self.TimeEdit = QTimeEdit(self)
  85.            
  86.             self.btnP = QPushButton('More', self)
  87.             self.btnP.clicked.connect(self.ShowTextEdit)
  88.            
  89.             self.ToolBtn = QToolButton(self)
  90.  
  91.             self.TextEdit = QTextEdit(self)
  92.             self.TextEdit.setGeometry(QRect(510, 70, 480, 380))
  93.             self.btnEdit = QPushButton('Edit', self)
  94.             self.btnEdit.setGeometry(830, 450, 75, 20)
  95.             self.btnHide = QPushButton('Hide', self)
  96.             self.btnHide.setGeometry(915, 450, 75, 20)
  97.  
  98.             GUI.Widgets.append([self.Label, self.CheckBox, self.lineEditP, self.TimeEdit, self.btnP, self.ToolBtn])
  99.             GUI.WTextEdits.append([self.TextEdit, self.btnEdit, self.btnHide])
  100.  
  101.             del GUI.Widgets[-2]
  102.  
  103.             self.UpdateProblem()
  104.         #else:
  105.  
  106.  
  107.     def DelAllProblem(self):
  108.         GUI.Widgets.clear()
  109.         self.HideTextEdit()
  110.         GUI.WTextEdits.clear()
  111.         self.UpdateProblem()
  112.  
  113.  
  114. if __name__ == '__main__':
  115.     app = QApplication(sys.argv)
  116.     gui = GUI()
  117.     sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement