Guest User

Untitled

a guest
Aug 15th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.49 KB | None | 0 0
  1. from PyQt5 import QtWidgets, QtCore, QtGui
  2. import string
  3.  
  4. grid = [[["text", "GREEN"], 0, ["text", "RED"], 0, 0, 0, 0],
  5. [0, 0, 0, 0, 0, 0, 0],
  6. [0, 0, 0, 0, 0, 0, 0],
  7. [0, 0, 0, 0, 0, 0, 0],
  8. [0, 0, 0, 0, 0, 0, 0],
  9. [0, 0, 0, 0, 0, 0, 0],
  10. [0, 0, 0, 0, 0, 0, 0],
  11. [0, 0, 0, 0, 0, 0, 0],
  12. [0, 0, 0, 0, 0, 0, 0],
  13. [0, 0, 0, 0, 0, 0, 0]]
  14.  
  15. BTN = """QPushButton{{font-weight: bold; color: {};
  16. font-size: 14px; background-color: {};
  17. border-width: 2px; border-radius: 100px}}"""
  18.  
  19.  
  20. class Widget(QtWidgets.QWidget):
  21. def __init__(self, parent=None):
  22. super(Widget, self).__init__(parent)
  23.  
  24. self.initUI()
  25. self.createLayout()
  26. self.center_widget()
  27.  
  28. def initUI(self):
  29. p = self.palette()
  30. gradient = QtGui.QLinearGradient(0, 0, 0, 400)
  31. gradient.setColorAt(0.0, QtGui.QColor('#f1f1f1'))
  32. gradient.setColorAt(1.0, QtGui.QColor('#00a1de'))
  33. p.setBrush(QtGui.QPalette.Window, QtGui.QBrush(gradient))
  34. self.setPalette(p)
  35.  
  36. def createLayout(self):
  37. hlay = QtWidgets.QHBoxLayout(self)
  38. frameL = QtWidgets.QFrame()
  39.  
  40. vlay = QtWidgets.QVBoxLayout(frameL)
  41. frame = QtWidgets.QFrame()
  42. frame.setObjectName("principal")
  43. frame.setStyleSheet("#principal{border: 2px solid white;}")
  44. hlay.addWidget(frameL)
  45. hlay.addWidget(frame)
  46.  
  47. gridLayout = QtWidgets.QGridLayout(frame)
  48.  
  49. h = 60 # height
  50.  
  51. for i, row in enumerate(grid):
  52. letter = "{}".format(string.ascii_uppercase[i])
  53. frameButton = QtWidgets.QFrame()
  54. frameButton.setFixedHeight(h)
  55. frameButton.setContentsMargins(0, 0, 0, 0)
  56. lay = QtWidgets.QVBoxLayout(frameButton)
  57. button = QtWidgets.QPushButton(letter)
  58. button.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
  59.  
  60.  
  61. button.clicked.connect(lambda: self.populate_row(letter)) # Every button click returns 'J'
  62.  
  63.  
  64. lay.addWidget(button)
  65. vlay.addWidget(frameButton)
  66. for j, val in enumerate(row):
  67. gridButton = QtWidgets.QPushButton()
  68. gridButton.setFixedSize(h, h)
  69. if isinstance(val, list):
  70. gridButton.setText(val[0])
  71. if val[1] == "GREEN":
  72. gridButton.setStyleSheet(BTN.format('white', 'green'))
  73. elif val[1] == "RED":
  74. gridButton.setStyleSheet(BTN.format('white', 'red'))
  75. else:
  76. gridButton.setStyleSheet(BTN.format('black', 'white'))
  77. gridButton.setText("{}".format(val))
  78. gridLayout.addWidget(gridButton, i, j)
  79.  
  80. for ix in range(j + 1):
  81. label = QtWidgets.QLabel("{}".format(ix + 1))
  82. label.setAlignment(QtCore.Qt.AlignCenter)
  83. gridLayout.addWidget(label, i + 1, ix)
  84. vlay.addWidget(QtWidgets.QLabel())
  85.  
  86. def center_widget(self):
  87. self.window().setGeometry(
  88. QtWidgets.QStyle.alignedRect(
  89. QtCore.Qt.LeftToRight,
  90. QtCore.Qt.AlignCenter,
  91. self.window().size(),
  92. QtWidgets.QApplication.desktop().availableGeometry())
  93. )
  94.  
  95. def populate_row(self, letter):
  96. """ Populate the row with data """
  97. print(letter)
  98.  
  99.  
  100. if __name__ == '__main__':
  101. import sys
  102.  
  103. app = QtWidgets.QApplication(sys.argv)
  104. w = Widget()
  105. w.show()
  106. sys.exit(app.exec_())
Add Comment
Please, Sign In to add comment