def __init__(self): super(MainWindow, self).__init__() self.setWindowTitle("My App") label = QLabel("Hello") font = label.font() font.setPointSize(30) label.setFont(font) label.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.setCentralWidget(label)
def test_text(pixmap_differ: PixmapDiffer): actual: QPainter expected: QPainter with pixmap_differ.create_painters(300, 240, 'scaled_label_text') as (actual, expected): ex_widget = QWidget() ex_layout = QVBoxLayout(ex_widget) ex_label1 = QLabel('Lorem ipsum') ex_label2 = QLabel('Lorem ipsum') ex_font = ex_label1.font() if ex_font.family() == 'Sans Serif': # Fonts are different on GitHub actions. big_font_size = 32 small_font_size = 27 else: big_font_size = 35 small_font_size = 28 ex_font.setPointSize(big_font_size) ex_label1.setFont(ex_font) ex_font.setPointSize(small_font_size) ex_label2.setFont(ex_font) ex_size_policy = QSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) ex_label1.setSizePolicy(ex_size_policy) ex_label1.setAlignment(Qt.AlignBottom) ex_label2.setAlignment(Qt.AlignTop) ex_label2.setSizePolicy(ex_size_policy) ex_layout.addWidget(ex_label1) ex_layout.addWidget(ex_label2) ex_layout.setStretch(0, 4) ex_layout.setStretch(1, 1) ex_widget.resize(300, 240) expected.drawPixmap(0, 0, ex_widget.grab()) widget = QWidget() layout = QVBoxLayout(widget) label1 = ScaledLabel('Lorem ipsum') label2 = ScaledLabel('Lorem ipsum') size_policy = QSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) label1.setSizePolicy(size_policy) label2.setSizePolicy(size_policy) label1.setScaledContents(True) label2.setScaledContents(True) label1.setAlignment(Qt.AlignBottom) label2.setAlignment(Qt.AlignTop) layout.addWidget(label1) layout.addWidget(label2) layout.setStretch(0, 4) layout.setStretch(1, 1) widget.resize(300, 240) actual.drawPixmap(0, 0, widget.grab())
def _setup_view_widget(self, view_widget, title, model, update_slot, width=250): view_widget.set_model(model) view_widget.selection_behavior = QtWidgets.QAbstractItemView.SelectRows view_widget.selection_model().selectionChanged.connect(update_slot) view_widget.edit_triggers = QtWidgets.QAbstractItemView.NoEditTriggers count_widget = QLabel() count_widget.alignment = Qt.AlignRight font = count_widget.font font.set_italic(True) count_widget.font = font widget = QWidget() if width > 0: widget.set_fixed_width(width) layout = QVBoxLayout(widget) layout.add_widget(QLabel(title)) layout.add_widget(view_widget) layout.add_widget(count_widget) layout.contents_margins = QtCore.QMargins(0, 0, 0, 0) return view_widget, count_widget, widget
def __init__(self, parent, text: str, color: QColor, onChange): """ onChange( QColor ) : called when a color is chosen. Receives the new color as argument """ super(ColorButton, self).__init__(parent) # reference to the color dialog that is opened self.color_dialog = None # elements button = QPushButton() button.setFixedWidth(50) label = QLabel(text) # reduce the font-weight of the label font = label.font() font.setWeight(QFont.Thin) label.setFont(font) layout = QGridLayout() layout.setContentsMargins(QMargins(0, 0, 0, 0)) layout.addWidget(label, 0, 0) layout.addWidget(button, 0, 1) self.setLayout(layout) self.show() button.clicked.connect(self.onClick) self.button = button self.color = color self.on_change = onChange self.styleButton()
class GameWindow(QtWidgets.QWidget): grid: QGridLayout label: QLabel game_state: GameState def __init__(self, is_server: bool): super().__init__() self.is_server = is_server self.game_state = GameState(GAME_SZIE, self._refresh_ui) self._init_window() self._init_ui() self.game_state.setup_multiplayer_connection(is_server) def _init_window(self): self.resize(800, 800) if self.is_server == None: postfix = "single player" else: if self.is_server: postfix = "multi player (server)" else: postfix = "multi player (client)" self.setWindowTitle(f"Multiplayer Tic Tac Teo - {postfix}") self.show() def _init_ui(self): hbox = QVBoxLayout() self.setLayout(hbox) self.label = QLabel() self.label.setText(f"Turn {self.game_state.turn.value}") f: QtGui.QFont = self.label.font() f.setPixelSize(50) self.label.setFont(f) hbox.addWidget(self.label, alignment=Qt.AlignCenter) self.grid = QGridLayout() hbox.addLayout(self.grid) for y in range(0, GAME_SZIE): for x in range(0, GAME_SZIE): button = QPushButton() button.setText(self.game_state.get(x, y).value) f: QtGui.QFont = button.font() f.setPixelSize(50) button.setFont(f) button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) button.clicked.connect( self.get_tile_clicked_listener(button, x, y)) self.grid.addWidget(button, y, x) def _get_button_at(self, x, y) -> QPushButton: return self.grid.itemAtPosition(y, x).widget() def _refresh_ui(self): self.label.setText(f"Turn {self.game_state.turn.value}") for y in range(0, GAME_SZIE): for x in range(0, GAME_SZIE): txt = self.game_state.get(x, y).value self._get_button_at(x, y).setText(txt) winner = self.game_state.winner if winner: msgBox = QMessageBox() if winner == TileState.EMPTY: msgBox.setText(f"Tie") else: msgBox.setText(f"Winner is {winner.value}") msgBox.exec() self.game_state.new_game() def get_tile_clicked_listener(self, button: QPushButton, x: int, y: int): def click_action(): if self.game_state.user_tile_type == self.game_state.turn: self.game_state.set(x, y, self.game_state.user_tile_type) return click_action
class ApplicationWindow(QMainWindow): """ Example based on the example by 'scikit-image' gallery: "Immunohistochemical staining colors separation" https://scikit-image.org/docs/stable/auto_examples/color_exposure/plot_ihc_color_separation.html """ def __init__(self, parent=None): QMainWindow.__init__(self, parent) self._main = QWidget() self.setCentralWidget(self._main) # Main menu bar self.menu = self.menuBar() self.menu_file = self.menu.addMenu("File") exit = QAction("Exit", self, triggered=qApp.quit) self.menu_file.addAction(exit) self.menu_about = self.menu.addMenu("&About") about = QAction("About Qt", self, shortcut=QKeySequence(QKeySequence.HelpContents), triggered=qApp.aboutQt) self.menu_about.addAction(about) # Create an artificial color close to the original one self.ihc_rgb = data.immunohistochemistry() self.ihc_hed = rgb2hed(self.ihc_rgb) main_layout = QVBoxLayout(self._main) plot_layout = QHBoxLayout() button_layout = QHBoxLayout() label_layout = QHBoxLayout() self.canvas1 = FigureCanvas(Figure(figsize=(5, 5))) self.canvas2 = FigureCanvas(Figure(figsize=(5, 5))) self._ax1 = self.canvas1.figure.subplots() self._ax2 = self.canvas2.figure.subplots() self._ax1.imshow(self.ihc_rgb) plot_layout.addWidget(self.canvas1) plot_layout.addWidget(self.canvas2) self.button1 = QPushButton("Hematoxylin") self.button2 = QPushButton("Eosin") self.button3 = QPushButton("DAB") self.button4 = QPushButton("Fluorescence") self.button1.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) self.button2.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) self.button3.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) self.button4.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) self.button1.clicked.connect(self.plot_hematoxylin) self.button2.clicked.connect(self.plot_eosin) self.button3.clicked.connect(self.plot_dab) self.button4.clicked.connect(self.plot_final) self.label1 = QLabel("Original", alignment=Qt.AlignCenter) self.label2 = QLabel("", alignment=Qt.AlignCenter) font = self.label1.font() font.setPointSize(16) self.label1.setFont(font) self.label2.setFont(font) label_layout.addWidget(self.label1) label_layout.addWidget(self.label2) button_layout.addWidget(self.button1) button_layout.addWidget(self.button2) button_layout.addWidget(self.button3) button_layout.addWidget(self.button4) main_layout.addLayout(label_layout, 2) main_layout.addLayout(plot_layout, 88) main_layout.addLayout(button_layout, 10) # Default image self.plot_hematoxylin() def set_buttons_state(self, states): self.button1.setEnabled(states[0]) self.button2.setEnabled(states[1]) self.button3.setEnabled(states[2]) self.button4.setEnabled(states[3]) @Slot() def plot_hematoxylin(self): cmap_hema = LinearSegmentedColormap.from_list("mycmap", ["white", "navy"]) self._ax2.imshow(self.ihc_hed[:, :, 0], cmap=cmap_hema) self.canvas2.draw() self.label2.setText("Hematoxylin") self.set_buttons_state((False, True, True, True)) @Slot() def plot_eosin(self): cmap_eosin = LinearSegmentedColormap.from_list("mycmap", ["darkviolet", "white"]) self._ax2.imshow(self.ihc_hed[:, :, 1], cmap=cmap_eosin) self.canvas2.draw() self.label2.setText("Eosin") self.set_buttons_state((True, False, True, True)) @Slot() def plot_dab(self): cmap_dab = LinearSegmentedColormap.from_list("mycmap", ["white", "saddlebrown"]) self._ax2.imshow(self.ihc_hed[:, :, 2], cmap=cmap_dab) self.canvas2.draw() self.label2.setText("DAB") self.set_buttons_state((True, True, False, True)) @Slot() def plot_final(self): h = rescale_intensity(self.ihc_hed[:, :, 0], out_range=(0, 1)) d = rescale_intensity(self.ihc_hed[:, :, 2], out_range=(0, 1)) zdh = np.dstack((np.zeros_like(h), d, h)) self._ax2.imshow(zdh) self.canvas2.draw() self.label2.setText("Stain separated image") self.set_buttons_state((True, True, True, False))