def __init__(self): self.main_widget = QWidget() self.play_button = get_button("Play", 80, 30) self.draw_opengl_button = get_button("Inspect trees", enabled=False) self.tree_path_edit = get_hint_line_edit() self.tree_path_edit.textChanged[str].connect( lambda: self.draw_opengl_button.setEnabled(self.tree_path_edit.text() != "")) self.tree_path_edit.setReadOnly(True) self.chosen_trees_paths = [] self.select_tree_path_button_files = get_resizable_button("Select files") self.select_tree_path_button_directories = get_resizable_button("Select directory") self.chess_button = get_radiobutton("Chess") self.mancala_button = get_radiobutton("Mancala") self.player_vs_player_button = get_radiobutton("Player vs player") self.player_vs_pc_button = get_radiobutton("Player vs PC") self.pc_vs_pc_button = get_radiobutton("PC vs PC") self.limit_moves_check = get_checkbox("Limit moves in playouts") self.player_vs_player_button = get_radiobutton("Player vs player") self.player_vs_pc_button = get_radiobutton("Player vs PC") self.max_iterations_edit = get_line_edit() self.max_time_edit = get_line_edit() self.max_moves_edit = get_line_edit() self.exploration_parameter_label = get_non_resizable_label("Exploration parameter") self.exploration_parameter_edit = get_line_edit() self.max_iterations_button = get_radiobutton("Max iterations before move") self.max_time_button = get_radiobutton("Max time for move (ms)") self.animate_check = get_checkbox("Animate tree growth") self.most_visited_label = QLabel() self.least_visited_label = QLabel() self._create_layout() self._add_tooltips() self._set_events() self._load_defaults()
def __init__(self, main_widget, canvas: MonteCarloTreeCanvas, sequences): self.canvas = canvas self.reset_button = get_button("Reset view") self.serialize_csv_radiobutton = get_radiobutton("Save as csv file") self.serialize_binary_radiobutton = get_radiobutton( "Save as binary file") self.save_image_radiobutton = get_radiobutton("Save as bitmap") self.serialize_button = get_button("Save tree") self.node_panel_widget = None self.tree_details_panel_widget = None self.tree_details_labels = [["Vertices count", None]] self.node_labels = [["Id", None], ["Child count", None], ["State name", None], ["Move name", None], ["Visits count", None], ["Visits count pre", None], ["Win score", None], ["Average prize", None], ["Current player", None]] self._create_layout(main_widget, sequences)
def _create_jump_to_widget(self): self.jump_to_widget = QWidget() self.jump_label = get_non_resizable_label("Jump to tree with number: ") self.jump_edit_line = get_line_edit(60) self.jump_button = get_button("OK", width=20) jump_to_layout = QGridLayout() self.jump_to_widget.setLayout(jump_to_layout) jump_to_layout.addWidget(self.jump_label, 0, 0) jump_to_layout.addWidget(self.jump_edit_line, 0, 1) jump_to_layout.addWidget(self.jump_button, 0, 2)
def _create_left_right_button_widget(self): self.left_button = get_button("<<", width=40) self.right_button = get_button(">>", width=40) self.tree_info_number_label = get_non_resizable_label() self.tree_info_filename_label = get_non_resizable_label() self.left_right_widget = QWidget() left_right_layout = QGridLayout() self.left_right_widget.setLayout(left_right_layout) self._create_jump_to_widget() left_right_layout.addWidget(self.tree_info_filename_label, 0, 0, 1, 2, alignment=QtCore.Qt.AlignCenter) if len(self.canvas.trees_paths) > 1: left_right_layout.addWidget(self.tree_info_number_label, 1, 0, 1, 2, alignment=QtCore.Qt.AlignCenter) left_right_layout.addWidget(self.left_button, 2, 0, alignment=QtCore.Qt.AlignRight) left_right_layout.addWidget(self.right_button, 2, 1, alignment=QtCore.Qt.AlignLeft) left_right_layout.addWidget(self.jump_to_widget, 3, 0, 1, 2, alignment=QtCore.Qt.AlignCenter)
def _create_game_layout(self): self.game_layout = QGridLayout() # self.game_layout.setContentsMargins(0, 20, 20, 20) self.game_layout.setSpacing(20) self.game_widget = QWidget() self.game_widget.setLayout(self.game_layout) self.start_over_button = get_button("Start over") self.start_over_button.clicked.connect(self._handle_start_over_button) self.game_status_label = get_non_resizable_label("Game in progress") self.game_layout.addWidget(self.manager.canvas, 0, 0) self.game_layout.addWidget(self.game_status_label, 1, 0, alignment=QtCore.Qt.AlignCenter) self.game_layout.addWidget(self.start_over_button, 2, 0, alignment=QtCore.Qt.AlignCenter)
def __init__(self, parent: QMainWindow, manager: MonteCarloWindowManager, display_settings: DisplaySettings): self.main_layout = QGridLayout() self.next_move_button = get_button("Make next move") self.next_move_button.clicked.connect(self.handle_next_move_button) super(MachineVsMachineWindow, self).__init__(parent, manager, display_settings, self.main_layout) self.game_layout.addWidget(self.next_move_button, 3, 0, alignment=QtCore.Qt.AlignCenter)