Как переименовывать экземпляр класса в цикле
Хочу создать 1000 кнопок с помощь цикла, но проблема в том, что не могу переименовать экземпляр в цикле.
Как это осуществить?
UPD: Можно ли это осуществить через словарь или список?
import sys
from PyQt5.Qt import *
class Button(QPushButton):
def __init__(self):
QPushButton.__init__(self)
self.setStyleSheet("QPushButton:hover {background-color: rgb(255,0,0) } \
QPushButton:!hover {background-color: rgb(0,85,0)}; ")
class Window(QWidget):
def __init__(self, parent = None):
QWidget.__init__(self,parent)
self.button = QPushButton(self)
self.layout = QGridLayout()
for i in range(1000):
i = Button()
self.layout.addWidget(i)
self.setLayout(self.layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так
import sys
from PyQt5.Qt import *
class Button(QPushButton):
def __init__(self, num):
super().__init__()
self.setText(f'{num}')
self.setMinimumSize(30, 30)
self.setMaximumSize(30, 30)
self.setStyleSheet("""
QPushButton:hover {
background-color: rgb(255, 0, 0);
border-radius: 15px;
}
QPushButton:!hover {
background-color: rgb(12, 185, 12);
border-radius: 15px;
}
""")
class Window(QWidget):
def __init__(self):
super().__init__()
self.layout = QGridLayout(self)
column = 30
for i in range(600):
btn = Button(i)
btn.clicked.connect(lambda ch, btn=btn: print(btn.text()))
self.layout.addWidget(btn)
self.layout.addWidget(btn, i // column, i % column)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
