Python Как сделать ячейки Pillow

Как можно сделать ячейки так, как показано на картинке. В будущем туда будет записываться информация.

То есть в переменной будет указано сколько нужно создать ячеек - столько ячеек и будет создаваться.

Картинка:

Пример ячеек


Ответы (1 шт):

Автор решения: S. Nick

Так как мне нравится все делать на PyQt5, то я вам и продемонстрирую как бы я это сделал.

Если вы еще не установили PyQt5, то я очень рекомендую.

PyQt — реализация фреймворка Qt для языка Python.

pip install PyQt5
pip install pyqt5-tools

Теперь запускаем python main.py, вводим сколько нужно создать ячеек и нажимаем кнопку 'Click me'.

main.py

from PyQt5.Qt import *


class Demo(QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.centralWidget = QWidget()
        self.centralWidget.setObjectName('centralWidget')
        self.setStyleSheet("background-color: #402218;")
        self.setCentralWidget(self.centralWidget)        
        
        self.frame = QFrame()
        self.w, self.h = 580, 580
        
        self.frame.setFixedSize(self.w, self.h)
        self.groupBoxLayout = QGridLayout(self.frame)
        self.groupBoxLayout.setContentsMargins(0, 0, 0, 0)
        self.groupBoxLayout.setSpacing(0)
        self.groupBoxLayout.setRowStretch(10, 1)

        self.spinBox = QSpinBox()
        self.spinBox.setMinimum(1)
        self.spinBox.setMaximum(25)
        self.spinBox.setProperty("value", 7)
        self.spinBox.setStyleSheet("background-color: #D5DBB3;")
        self.pushButton = QPushButton('Click me')
        self.pushButton.setStyleSheet("background-color: #D5DBB3;")
        self.pushButton.clicked.connect(self.on_clicked) 

        layout = QVBoxLayout(self.centralWidget)        
        layout.addWidget(self.frame)
        layout.addWidget(self.spinBox)
        layout.addWidget(self.pushButton)
       
    def on_clicked(self):
        num = self.spinBox.value()
        _column = num ** (0.5)
        column = int(_column) + (1 if _column % 1 else 0)
        
        countLayout = self.groupBoxLayout.count()
        for it in range(countLayout):                     
            w = self.groupBoxLayout.itemAt(0).widget()
            self.groupBoxLayout.removeWidget(w)     
            w.hide()
        
        for i in range(num):
            label = QLabel(f'<span style="color: #D7B19D;">{i+1}</span>', 
                alignment=Qt.AlignCenter)
            label.setFixedSize(self.w//column, self.h//column)
            label.setStyleSheet(
                f"font-size: {300//column}px; border: 2px solid #C68B59; \
                  background-color: #865439;")
            self.groupBoxLayout.addWidget(label, i // column, i % column)
        
        
if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    w = Demo()
    w.show()
    sys.exit(app.exec_()) 

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка