def init_visual(self): main_layout = QGridLayout() label = QLabel('Place your ships.') randomize_btn = QPushButton(text='randomize') randomize_btn.clicked.connect(self.randomize_field) internal_layout = QGridLayout() internal_layout.setSpacing(0) for row in range(10): for column in range(10): button = QPushButton() button.setFixedSize(20, 20) button.setObjectName(f'{row}_{column}') button.installEventFilter(self) self.buttons[(row, column)] = button internal_layout.addWidget(button, row, column) self.next_btn = QPushButton(text='Start') self.next_btn.clicked.connect(root_widget.start_battle) self.next_btn.setEnabled(False) main_layout.addWidget(label, 0, 0, Qt.AlignCenter) main_layout.addWidget(randomize_btn, 1, 0) main_layout.addLayout(internal_layout, 3, 0) main_layout.addWidget(self.next_btn, 5, 0) self.setLayout(main_layout)
def init_ai_field(self, layout): for row in range(10): for column in range(10): button = QPushButton() button.setFixedSize(20, 20) button.setObjectName(f'{row}_{column}') button.installEventFilter(self) self.ai_buttons[(row, column)] = button layout.addWidget(button, row, column)
def set_button_icon(parent: QObject, obj: QPushButton, leave_icon_path: str, hover_icon_path: str): obj.setIcon(QIcon(leave_icon_path)) obj.installEventFilter( ButtonHoverWatcher( leave_icon_path, hover_icon_path, parent=parent, ))