Exemple #1
0
    def makeDisplay(self):
        layout = QGridLayout(self)

        wordLabel = QLabel(self)
        self.wordLabel = wordLabel
        font = wordLabel.font()
        font.setPointSize(32)
        font.setBold(True)
        wordLabel.setFont(font)
        layout.addWidget(wordLabel, 0, 0, 1, 6)
        layout.setMargin(10)

        group = QButtonGroup(self)
        self.group = group

        self.buttons = []

        for i in range(4):
            scoreButton = QPushButton(self, text=str(i))
            scoreButton.setCheckable(True)
            if i == 0:
                scoreButton.setChecked(True)
            scoreButton.setMaximumWidth(40)
            group.addButton(scoreButton, i)
            layout.addWidget(scoreButton, 1, i)
            self.buttons.append(scoreButton)

        self.modelSimilarity = QLabel(self, text='')
        layout.addWidget(self.modelSimilarity, 2, 0)

        self.setLayout(layout)
    def _create_switch(self, box, layout, col, labels):
        if labels is None:
            return None

        l = QLabel(labels[0], box)
        l.setMinimumHeight(20)
        l.setAlignment(Qt.AlignCenter | Qt.AlignBottom)

        font = l.font()
        font.setPointSize(7)
        font.setBold(True)
        l.setFont(font)
        layout.addWidget(l, 3, col, Qt.AlignBottom | Qt.AlignCenter)

        r1 = QRadioButton(box)
        r1.setStyleSheet(
            'QRadioButton::indicator{subcontrol-position:center;}')
        layout.addWidget(r1, 4, col, Qt.AlignCenter)

        r2 = QRadioButton(box)
        r2.setStyleSheet(
            'QRadioButton::indicator{subcontrol-position:center;}')
        layout.addWidget(r2, 5, col, Qt.AlignCenter)

        l = QLabel(labels[1], box)
        l.setAlignment(Qt.AlignCenter)
        l.setFont(font)
        layout.addWidget(l, 6, col, Qt.AlignTop | Qt.AlignCenter)

        g = QButtonGroup(box)
        g.addButton(r1)
        g.addButton(r2)
        r1.setChecked(True)

        return r2
class ChooseOneOfWidget(QWidget):
    toggled = Signal(int, bool)

    def __init__(self, title: str, index_to_label: Dict[int, str], is_vertical=True,
                 checked_index: Optional[int] = None, parent=None):
        super().__init__(parent)
        self.__mapping = {}
        self.__main_layout = QVBoxLayout()
        self.__group_box = QGroupBox(title)
        self.__button_group = QButtonGroup()
        if is_vertical:
            self.__group_box_layout = QVBoxLayout()
        else:
            self.__group_box_layout = QHBoxLayout()

        for index, label in index_to_label.items():
            button = QRadioButton(label)
            self.__button_group.addButton(button, index)
            self.__group_box_layout.addWidget(button)
            if checked_index == index:
                button.setChecked(True)

        self.__group_box.setLayout(self.__group_box_layout)
        self.__button_group.idToggled.connect(self.__on_toggled)
        self.__main_layout.addWidget(self.__group_box)
        self.setLayout(self.__main_layout)

    @Slot(int, bool)
    def __on_toggled(self, index, is_checked):
        self.toggled.emit(index, is_checked)

    def get_checked(self) -> int:
        return self.__button_group.checkedId()
Exemple #4
0
    def __init__(self, embedded: bool = False, parent: QWidget = None):
        super().__init__(parent)

        self._embedded = embedded

        self._frame_width = VisionStyle.FRAME_WIDTH
        self._frame_color = VisionStyle.EXTERNAL_FRAME_COLOR

        self.man_button = GenderButton('M')
        self.man_button.setChecked(True)
        self.man_button.toggled.connect(self.gender_changed)
        self.woman_button = GenderButton('W', add_left_border=True)
        gender_button_group = QButtonGroup(self)
        gender_button_group.addButton(self.man_button)
        gender_button_group.addButton(self.woman_button)

        h_layout = QHBoxLayout(self)
        h_layout.setContentsMargins(0, 0, 0, 0)
        h_layout.setSpacing(0)

        h_layout.addWidget(self.man_button)
        h_layout.addWidget(self.woman_button)

        if not self._embedded:
            self.setFrameStyle(QFrame.Box)
            self.setStyleSheet(
                f'GenderWidget {{ border: {self.frame_width}px solid '
                f'{self.frame_color.name()}; }}')
class SimSpeedControls(QHBoxLayout):
    def __init__(self,
                 sim_controller: SimController,
                 parent: Optional[QWidget] = None) -> None:
        super().__init__(parent)
        self.sim_controller = sim_controller
        self.button_group = QButtonGroup(self)
        self.buttons: dict[SimSpeedSetting, QPushButton] = {}

        for speed_setting in SimSpeedSetting:
            button = QPushButton(speed_setting.text)
            button.setCheckable(True)  # TODO: CSS
            self.button_group.addButton(button, id=speed_setting.speed_factor)
            self.addWidget(button)
            self.buttons[speed_setting] = button

        self.button_group.idPressed.connect(self.speed_changed)
        self.sim_controller.sim_speed_reset.connect(self.on_sim_speed_reset)

    def speed_changed(self, speed_factor: int) -> None:
        setting = SimSpeedSetting.from_factor(speed_factor)
        self.sim_controller.set_simulation_speed(setting)

    def on_sim_speed_reset(self, speed_setting: SimSpeedSetting) -> None:
        self.buttons[speed_setting].setChecked(True)
Exemple #6
0
class ButtonGroupWidget(QGroupBox):
    def __init__(self, parent=None):
        super(ButtonGroupWidget, self).__init__(parent)
        self._selectedOption = -1
        self.buttonGroup = QButtonGroup()
        self.layoutGroupBox = QVBoxLayout(self)

    def addRadioButton(self, optionText, optionId):
        print(optionText)
        radioButton = QRadioButton(optionText)
        radioButton.clicked.connect(self.updateOptionSelected)
        self.layoutGroupBox.addWidget(radioButton)
        self.buttonGroup.addButton(radioButton, optionId)

    def updateOptionSelected(self):
        # print(self.buttonGroup.checkedId()) # for test purpose
        # self.selectedOption = self.buttonGroup.checkedId()
        # print(self._selectedOption) # for test purpose
        self.selectedOption = self.buttonGroup.checkedId()
        QApplication.postEvent(
            self, QKeyEvent(QEvent.KeyPress, Qt.Key_Enter, Qt.NoModifier))

    def getSelectedOption(self):
        print("get selectedOption is called")
        return self._selectedOption

    def setSelectedOption(self, selectedOption):
        # print ("selectedOption",selectedOption)
        print("set selectedOption is called")
        self._selectedOption = selectedOption
        self.buttonGroup.button(selectedOption).setChecked(True)

    selectedOption = Property(int, getSelectedOption, setSelectedOption)
class ElchRibbon(QWidget):
    def __init__(self, menus=None, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setAttribute(Qt.WA_StyledBackground, True)
        self.menus = menus if menus is not None else [
            'Devices', 'Control', 'Setpoints', 'PID', 'Plotting', 'Logging'
        ]
        self.menu_buttons = {
            key: QPushButton(parent=self, objectName=key)
            for key in self.menus
        }
        self.buttongroup = QButtonGroup()
        elchicon = QLabel()
        elchicon.setPixmap(QPixmap('Icons/ElchiHead.png'))

        vbox = QVBoxLayout()
        vbox.addWidget(elchicon, alignment=Qt.AlignHCenter)
        for key in self.menus:
            vbox.addWidget(self.menu_buttons[key])
            self.buttongroup.addButton(self.menu_buttons[key])
            self.menu_buttons[key].setCheckable(True)
            self.menu_buttons[key].setFixedSize(150, 100)

        vbox.addStretch()
        vbox.setContentsMargins(0, 0, 0, 0)
        vbox.setSpacing(0)
        self.setMinimumWidth(150)
        self.setLayout(vbox)
Exemple #8
0
 def group(self):
     bg = QButtonGroup(self)
     for w in self.widgets:
         try:
             bg.addButton(w.switch)
         except AttributeError:
             pass
     bg.exclusive()
Exemple #9
0
    def __init__(self):

        self.widget = QWidget()

        layout = QVBoxLayout()
        self.widget.setLayout(layout)

        # Section Buttons
        load_image_button = QPushButton("Load Section")
        layout.addWidget(load_image_button)
        load_image_button.clicked.connect(self.show_load_image_dialog)

        load_image_button2 = QPushButton("Quick Load Section")
        layout.addWidget(load_image_button2)
        load_image_button2.clicked.connect(lambda: self.load_section(
            "data/RA_10X_scans/MeA/S1_07032020.ome.tiff"))

        # Scale Slider (Set Section Resolution)
        self.resample_widget = LabelledSliderWidget(min=15,
                                                    max=200,
                                                    label="Scale")
        layout.addLayout(self.resample_widget.layout)
        self.resample_widget.connect(
            lambda val: self.set_section_image_resolution(val))

        self.dim_widgets = []
        for dim in [
                'right', 'superior', 'anterior', 'rot_lateral', 'rot_axial',
                'rot_median'
        ]:
            widget = LabelledSliderWidget(
                min=-10000 if not dim.startswith('rot_') else -180,
                max=10000 if not dim.startswith('rot_') else 180,
                label=dim)
            layout.addLayout(widget.layout)
            fun = lambda d, value: self.transform_section(**{d: value})
            widget.connect(partial(fun, dim))
            self.dim_widgets.append((widget, fun))

        # Atlas BUttons
        button_hbox = QHBoxLayout()
        layout.addLayout(button_hbox)

        atlas_buttons = QButtonGroup(self.widget)
        atlas_buttons.setExclusive(True)
        atlas_buttons.buttonToggled.connect(self.atlas_button_toggled)

        for resolution in [100, 25, 10]:
            atlas_button = QPushButton(f"{resolution}um")
            atlas_button.setCheckable(True)
            button_hbox.addWidget(atlas_button)
            atlas_buttons.addButton(atlas_button)

            # The 10um atlas takes way too long to download at the moment.
            # It needs some kind of progress bar or async download feature to be useful.
            # The disabled button here shows it as an option for the future, but keeps it from being used.
            if resolution == 10:
                atlas_button.setDisabled(True)
class ChannelSelector(QWidget):
    channelSelected = Signal(str)
    channelDeselected = Signal(str)

    def __init__(self):
        QWidget.__init__(self)
        self.setLayout(QGridLayout())

        self.control_group = QButtonGroup()
        self.control_group.setExclusive(False)
        self.control_group.idToggled.connect(self.notifyChannel)
        self.ids_to_channels = {}  # {id: channel_name (str)}
        self.checkboxes = {}  # {channel_name: QCheckBox}

        self.next_id = 0

        # TODO(jacob): 4 columns is mostly an arbitrary choice; 5 seemed
        # too crowded, 3 seemed too empty. Ideally we'd change this
        # dynamically based on the column width.
        self.num_cols = 4

    def add_checkbox(self, channel_name):
        if channel_name in self.checkboxes:
            warnings.warn('attempted to add a duplicate checkbox to the DAQ channel selector')
            return
        checkbox = QCheckBox(channel_name)
        self.checkboxes[channel_name] = checkbox

        num_widgets = len(self.checkboxes)
        row = (num_widgets - 1) // self.num_cols
        col = (num_widgets - 1) % self.num_cols
        self.layout().addWidget(checkbox, row, col)

        self.control_group.addButton(checkbox, self.next_id)
        self.ids_to_channels[self.next_id] = channel_name
        self.next_id += 1

    def clear_checkboxes(self):
        for checkbox in self.checkboxes.values():
            self.control_group.removeButton(checkbox)
            self.layout().removeWidget(checkbox)
            checkbox.deleteLater()
        self.checkboxes = {}
        self.ids_to_channels = {}

    @Slot(top.PlumbingEngine)
    def updateNodeList(self, plumb):
        self.clear_checkboxes()
        for node in plumb.nodes(data=False):
            self.add_checkbox(node)

    @Slot(int)
    def notifyChannel(self, checkbox_id, is_checked):
        channel = self.ids_to_channels[checkbox_id]
        if is_checked:
            self.channelSelected.emit(channel)
        else:
            self.channelDeselected.emit(channel)
Exemple #11
0
    def displayWidgets(self):
        # create label and button widgets
        title = QLabel("Вечерний опрос")
        title.setFont(QFont('Arial', 17))
        question = QLabel("Насколько плодотворно прошел Ваш день?")
        question.setAlignment(Qt.AlignHCenter)
        # согдание горизонтального layout-а
        title_h_box = QHBoxLayout()
        title_h_box.addStretch()
        title_h_box.addWidget(title)
        title_h_box.addStretch()
        # Варианты выбора
        ratings = ["Ужасно", "Ну, такое", "Нормально", "Отлично"]

        ratings_h_box = QHBoxLayout()
        # Устанавливаем расстояние между виджетами в горизонтальном layout-е
        ratings_h_box.setSpacing(80)

        ratings_h_box.addStretch()
        for rating in ratings:
            rate_label = QLabel(rating, self)
            ratings_h_box.addWidget(rate_label)
        ratings_h_box.addStretch()

        cb_h_box = QHBoxLayout()
        # расстояние между виджетами в горизонтальном layout-е
        cb_h_box.setSpacing(100)

        # Создаем контейнер для групировки QCheckBox
        scale_bg = QButtonGroup(self)

        cb_h_box.addStretch()
        for cb in range(len(ratings)):
            scale_cb = QCheckBox(str(cb), self)
            cb_h_box.addWidget(scale_cb)
            scale_bg.addButton(scale_cb)
        cb_h_box.addStretch()

        # устанавливаем функцию отработки варианта выбора
        scale_bg.buttonClicked.connect(self.checkboxClicked)
        close_button = QPushButton("Закрыть", self)
        close_button.clicked.connect(self.close)
        # Компануем вертикальный layout последовательно
        # добавляя виджеты and элементы h_box layout
        v_box = QVBoxLayout()
        v_box.addLayout(title_h_box)
        v_box.addWidget(question)
        v_box.addStretch(1)
        v_box.addLayout(ratings_h_box)
        v_box.addLayout(cb_h_box)
        v_box.addStretch(2)
        v_box.addWidget(self.label)
        v_box.addWidget(close_button)
        self.setLayout(v_box)
Exemple #12
0
class basicWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.label = QLabel('Which city do you live in?')
        self.rbtn1 = QRadioButton('New York')
        self.rbtn2 = QRadioButton('Houston')
        self.label2 = QLabel("")

        self.label3 = QLabel('Which state do you live in?')
        self.rbtn3 = QRadioButton('New York')
        self.rbtn4 = QRadioButton('Texas')
        self.label4 = QLabel("")

        self.btngroup1 = QButtonGroup()
        self.btngroup2 = QButtonGroup()

        self.btngroup1.addButton(self.rbtn1)
        self.btngroup1.addButton(self.rbtn2)
        self.btngroup2.addButton(self.rbtn3)
        self.btngroup2.addButton(self.rbtn4)

        self.rbtn1.toggled.connect(self.onClicked)
        self.rbtn2.toggled.connect(self.onClicked)

        self.rbtn3.toggled.connect(self.onClickedState)
        self.rbtn4.toggled.connect(self.onClickedState)

        layout = QVBoxLayout()
        layout.addWidget(self.label)
        layout.addWidget(self.rbtn1)
        layout.addWidget(self.rbtn2)
        layout.addWidget(self.label2)

        layout.addWidget(self.label3)
        layout.addWidget(self.rbtn3)
        layout.addWidget(self.rbtn4)
        layout.addWidget(self.label4)

        self.setGeometry(200, 200, 300, 150)

        self.setLayout(layout)
        self.setWindowTitle('Radio Button Example')

        self.show()

    def onClicked(self):
        radioBtn = self.sender()
        if radioBtn.isChecked():
            self.label2.setText("You live in " + radioBtn.text())

    def onClickedState(self):
        radioBtn = self.sender()
        if radioBtn.isChecked():
            self.label4.setText("You live in " + radioBtn.text())
Exemple #13
0
class ElchPlotMenu(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        controls = ['Start', 'Clear', 'Export']
        self.buttons = {
            key: QPushButton(parent=self, text=key, objectName=key)
            for key in controls
        }
        self.buttons['Start'].setCheckable(True)
        self.checks = {
            key: QCheckBox(parent=self, text=key, objectName=key)
            for key in ['Sensor PV', 'Controller PV', 'Setpoint', 'Power']
        }
        self.check_group = QButtonGroup()
        self.check_group.setExclusive(False)

        vbox = QVBoxLayout()
        vbox.addWidget(QLabel(text='Plotting', objectName='Header'))
        for key in controls:
            vbox.addWidget(self.buttons[key])
            self.buttons[key].clicked.connect({
                'Start':
                functools.partial(self.start_stop_plotting),
                'Clear':
                self.clear_pplot,
                'Export':
                self.export_data
            }[key])
        vbox.addSpacing(20)
        vbox.addWidget(QLabel(text='Data sources', objectName='Header'))
        for key, button in self.checks.items():
            button.setChecked(True)
            self.check_group.addButton(button)
            vbox.addWidget(button)
        vbox.addStretch()
        vbox.setSpacing(10)
        vbox.setContentsMargins(10, 10, 10, 10)
        self.setLayout(vbox)

    def start_stop_plotting(self):
        pubsub.pub.sendMessage('gui.plot.start' if self.buttons['Start'].
                               isChecked() else 'gui.plot.stop')

    def clear_pplot(self):
        pubsub.pub.sendMessage('gui.plot.clear')
        if self.buttons['Start'].isChecked():
            self.buttons['Start'].click()

    def export_data(self):
        if (file_path := QFileDialog.getSaveFileName(
                self, 'Save as...', 'Logs/Log.csv', 'CSV (*.csv)')[0]) != '':
            pubsub.pub.sendMessage('gui.plot.export', filepath=file_path)
Exemple #14
0
    def _init(self):
        print("Building...")

        self.win = QMainWindow()
        self._default_window_title = self.title

        widget = QWidget()
        self.win.setCentralWidget(widget)

        main_layout = QHBoxLayout()
        widget.setLayout(main_layout)

        main_layout.addWidget(self.slice_widget)
        main_layout.addWidget(self.volume_widget)

        side_layout = QVBoxLayout()
        main_layout.addLayout(side_layout)

        load_image_button = QPushButton("Load Section")
        side_layout.addWidget(load_image_button)
        load_image_button.clicked.connect(self.show_load_image_dialog)

        # Atlas BUttons
        button_hbox = QHBoxLayout()
        side_layout.addLayout(button_hbox)

        atlas_buttons = QButtonGroup(self.win)
        atlas_buttons.setExclusive(True)
        atlas_buttons.buttonToggled.connect(self.atlas_button_toggled)

        for resolution in [100, 25, 10]:
            atlas_button = QPushButton(f"{resolution}um")
            atlas_button.setCheckable(True)
            button_hbox.addWidget(atlas_button)
            atlas_buttons.addButton(atlas_button)

            # The 10um atlas takes way too long to download at the moment.
            # It needs some kind of progress bar or async download feature to be useful.
            # The disabled button here shows it as an option for the future, but keeps it from being used.
            if resolution == 10:
                atlas_button.setDisabled(True)

        self.title_reset_timer = Timer(interval=2, connect=lambda e: self._show_default_window_title(), iterations=1,
                                       start=False)
        self._show_default_window_title()

        self.statusbar = self.win.statusBar()

        self.image_coord_label = QLabel(text="Image Coords")
        self.statusbar.addPermanentWidget(self.image_coord_label)

        self.win.show()
Exemple #15
0
    def displayWidgets(self):
        """
        Configura os widgets da app
        """

        titl_lbl = QLabel("Pizzaria Pinocchio")
        titl_lbl.setFont(QFont("Arial", 17))
        qust_lbl = QLabel("Como você classificaria o atendimento hoje?")

        titl_hbox = QHBoxLayout()
        titl_hbox.addStretch()
        titl_hbox.addWidget(titl_lbl)
        titl_hbox.addStretch()

        escala = ["Insatisfeito", "Médio", "Satisfeito"]

        escala_hbox = QHBoxLayout()
        escala_hbox.setSpacing(60)

        escala_hbox.addStretch()
        for eval in escala:
            eval_lbl = QLabel(eval, self)
            escala_hbox.addWidget(eval_lbl)
        escala_hbox.addStretch()

        btng_hbox = QHBoxLayout()
        btng_hbox.setSpacing(100)
        escala_bgrp = QButtonGroup(self)
        btng_hbox.addStretch()
        for btn in range(len(escala)):
            eval_chkb = QCheckBox(str(btn), self)
            btng_hbox.addWidget(eval_chkb)
            escala_bgrp.addButton(eval_chkb)
        btng_hbox.addStretch()

        escala_bgrp.buttonClicked.connect(self.checkboxClicked)

        close_btn = QPushButton("Fechar", self)
        close_btn.clicked.connect(self.close)

        vbox = QVBoxLayout()
        vbox.addLayout(titl_hbox)
        vbox.addWidget(qust_lbl)
        vbox.addStretch(1)
        vbox.addLayout(escala_hbox)
        vbox.addLayout(btng_hbox)
        vbox.addStretch(2)
        vbox.addWidget(close_btn)

        self.setLayout(vbox)
class MangaTrackerConfigWindow(QDialog, ui_configdialog.Ui_ConfigDialog):
    def __init__(self, parent=None):
        super(MangaTrackerConfigWindow, self).__init__(parent)
        self.setupUi(self)
        self.config = Config()
        self.database_name_text.setText(self.config.database_name)

        # Set up Show Empty Series option
        self.show_empty_series_button_group = QButtonGroup()
        self.show_empty_series_button_group.addButton(
            self.show_empty_series_yes_button, 1)
        self.show_empty_series_button_group.addButton(
            self.show_empty_series_no_button, 0)

        if self.config.show_empty_series:
            self.show_empty_series_yes_button.setChecked(True)
        else:
            self.show_empty_series_no_button.setChecked(True)

        # Set up Default to GUI option
        self.default_to_gui_button_group = QButtonGroup()
        self.default_to_gui_button_group.addButton(
            self.default_to_gui_yes_button, 1)
        self.default_to_gui_button_group.addButton(
            self.default_to_gui_no_button, 0)

        if self.config.default_to_gui:
            self.default_to_gui_yes_button.setChecked(True)
        else:
            self.default_to_gui_no_button.setChecked(True)

        self.config_save.clicked.connect(self.save_changes)
        self.config_cancel.clicked.connect(self.close)

    def save_changes(self):
        show_empty_series = self.show_empty_series_button_group.checkedId()
        self.config.set_property("show_empty_series", show_empty_series)

        default_to_gui = self.default_to_gui_button_group.checkedId()
        self.config.set_property("default_to_gui", default_to_gui)

        name = self.database_name_text.text()
        self.results_dialog = QMessageBox()

        if name == self.config.database_name:
            self.close()
        elif is_database(name):
            self.config.set_property("database_name", name)
            self.results_dialog.setText("Database name has been changed. ")
            self.results_dialog.show()

            # set up database if table doesn't exist
            DatabaseManager(name, init_database, False)

            self.close()
        else:
            self.results_dialog.setText("Database name must match "
                                        "the format *.db and not be "
                                        "a pre-existing file.")
            self.results_dialog.show()
class StartMineSchedDialog(QDialog):
    # 定义选择信号
    start_minesched_signal = Signal(str)

    # 初始化
    def __init__(self, config: ConfigFactory, logger: LoggerFactory,
                 title: str):
        super(StartMineSchedDialog, self).__init__()
        self.config = config
        self.logger = logger
        self.setWindowTitle(title)
        self.setModal(True)
        self.setWindowFlag(Qt.WindowContextHelpButtonHint, False)
        self.layout = QVBoxLayout()
        self.setLayout(self.layout)
        self.start_minesched_button_group = QButtonGroup()
        self.start_minesched_button_group.setExclusive(True)
        self.buttons = QDialogButtonBox(
            QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self)
        self.minescheds = []
        self.minesched_id = -1

    # 设置MineSched不同版本列表
    def set_minescheds(self, minescheds: list):
        self.minescheds = minescheds
        for _id, minesched in enumerate(self.minescheds):
            minesched_item = QRadioButton(minesched)
            self.start_minesched_button_group.addButton(minesched_item)
            self.start_minesched_button_group.setId(minesched_item, _id)
            if _id == 0:
                minesched_item.setChecked(True)
                self.minesched_id = 0
            self.layout.addWidget(minesched_item)
        self.start_minesched_button_group.buttonClicked.connect(
            self.start_minesched_change)
        self.buttons.accepted.connect(self.accept)
        self.buttons.rejected.connect(self.reject)
        self.layout.addWidget(self.buttons)

    # 如果单击ok按钮
    def accept(self):
        # 先关闭对话框,然后发送消息
        super(StartMineSchedDialog, self).accept()
        self.config.set_config('minesched', 'minesched_location',
                               self.minescheds[self.minesched_id])
        # 发送surpac启动消息
        self.start_minesched_signal.emit(self.minescheds[self.minesched_id])

    def start_minesched_change(self):
        self.minesched_id = self.start_minesched_button_group.checkedId()
Exemple #18
0
    def setup_ui(self):
        loader = QUiLoader()
        file = QFile('./media/main_window.ui')
        file.open(QFile.ReadOnly)
        self._window = loader.load(file)
        file.close()

        self.set_title()
        self.set_buttons()

        # Setup combobox
        self._window.transportation_combo.addItem('HSR', 'HighSpeedRail')
        self._window.transportation_combo.addItem('Taxi', 'Uber,Taxi')
        self._window.transportation_combo.addItem('Drive', 'Car')
        self._window.transportation_combo.addItem('Scooter', 'Motorcycle')

        # Setup RadioButton / CheckBox
        self._window.yes_radio.setChecked(False)
        self._window.no_radio.setChecked(True)
        vegetarian_group = QButtonGroup(self._window)
        vegetarian_group.setExclusive(True)
        vegetarian_group.addButton(self._window.yes_radio)
        vegetarian_group.addButton(self._window.no_radio)

        self._window.absolutly_check.setChecked(True)
        self._window.maybe_check.setChecked(False)
        self._window.sorry_check.setChecked(False)
        participate_group = QButtonGroup(self._window)
        participate_group.setExclusive(True)
        participate_group.addButton(self._window.absolutly_check)
        participate_group.addButton(self._window.maybe_check)
        participate_group.addButton(self._window.sorry_check)

        # Setup SpinBox
        self._window.members_spin.setRange(1, 10)
class ChoiceSurpacDialog(QDialog):
    # 定义选择信号
    choices_surpac_signal = Signal(str)

    # 初始化
    def __init__(self, config: ConfigFactory, logger: LoggerFactory,
                 title: str, surpacs: list):
        super(ChoiceSurpacDialog, self).__init__()
        self.config = config
        self.logger = logger

        self.setWindowTitle(title)
        self.setModal(True)
        self.setWindowFlag(Qt.WindowContextHelpButtonHint, False)
        self.surpacs = surpacs
        self.choice_surpac_button_group = QButtonGroup()
        self.choice_surpac_button_group.setExclusive(True)
        layout = QVBoxLayout()
        for surpac_id, choice in enumerate(surpacs):
            surpac_item = QRadioButton(choice)
            self.choice_surpac_button_group.addButton(surpac_item)
            self.choice_surpac_button_group.setId(surpac_item, surpac_id)
            if surpac_id == 0:
                surpac_item.setChecked(True)
                self.surpac_id = 0
            layout.addWidget(surpac_item)
        self.choice_surpac_button_group.buttonClicked.connect(
            self.choice_surpac_change)
        self.buttons = QDialogButtonBox(
            QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self)
        self.buttons.accepted.connect(self.accept)
        self.buttons.rejected.connect(self.reject)
        layout.addWidget(self.buttons)
        self.setLayout(layout)

    def accept(self):
        # 先关闭对话框,然后发送消息
        super(ChoiceSurpacDialog, self).accept()
        if self.config.get('master',
                           'surpac_location') == self.surpacs[self.surpac_id]:
            pass
        else:
            self.choices_surpac_signal.emit(self.surpacs[self.surpac_id])
            self.config.set_config('master', 'surpac_location',
                                   self.surpacs[self.surpac_id])

    def choice_surpac_change(self):
        self.surpac_id = self.choice_surpac_button_group.checkedId()
Exemple #20
0
class ColorAction(QWidgetAction):
    colorSelected = Signal(QColor)
    def __init__(self, parent=None, columns=int(0), rows=int(0), palette=list):
        # QWidgetAction.__init__(self, parent)
        super(ColorAction, self).__init__(parent)
        self._columns = columns
        self._rows = rows
        if columns < 1:
            self._columns = len(palette)
        if rows < 1:
            self._rows = len(palette)
        self.palette = palette
        self.init()

    def init(self):
        widget = QWidget()
        layout = QGridLayout(widget)
        layout.setSpacing(0)
        layout.setContentsMargins(0, 0, 0, 0)
        num = 0
        self.ColorDict = dict()
        self.ButtonList = QButtonGroup()
        for column in range(self._columns):
            for row in range(self._rows):
                if num < len(self.palette):
                    newColor = self.palette[num]
                    button = QPushButton('')
                    button.setContentsMargins(0,0,0,0)
                    button.setStyleSheet("padding: 0px;margin: 0px;")
                    button.setFixedSize(20,20)
                    self.ColorDict[button] = self.palette[num]
                    self.ButtonList.addButton(button)
                    pixmap = QPixmap(20, 20)
                    pixmap.fill(newColor)
                    button.setIcon(QIcon(pixmap))
                    layout.addWidget(button, row, column)
                    num+=1
                else:
                    break
        self.ButtonList.buttonClicked.connect(self.handleButton)
        self.setDefaultWidget(widget)

    def handleButton(self, buttonID=QPushButton):
        self.parent().hide()
        self.colorSelected.emit(self.ColorDict[buttonID])
Exemple #21
0
class View(QMainWindow, Ui_DsManager):
    def __init__(self, *args, **kwargs):
        super(View, self).__init__(*args, **kwargs)
        self.setupUi(self)

    def setupUi(self, DsManager):
        super(View, self).setupUi(DsManager)
        self.source_btn_group = QButtonGroup(self)
        self.reversed_entry_btn_group = QButtonGroup(self)
        self.source_btn_group.setExclusive(True)
        self.reversed_entry_btn_group.setExclusive(True)
        self.source_btn_group.addButton(self.cash_radio, 1)
        self.source_btn_group.addButton(self.main_radio, 2)
        self.source_btn_group.addButton(self.building_radio, 3)
        self.reversed_entry_btn_group.addButton(self.reversed_entry_increase,
                                                1)
        self.reversed_entry_btn_group.addButton(self.reversed_entry_decrease,
                                                2)
        self.cheque_label.hide()
        self.cheque_number.hide()

    def view_pdf(self, pdf_js, pdf_file_name):
        new_window = QMainWindow(self)
        pdf_viewer = Ui_PDFViewer()
        pdf_viewer.setupUi(new_window)
        pdf_url = QUrl.fromLocalFile(pdf_js)
        pdf_url.setQuery("file=" + pdf_file_name)
        pdf_viewer.webView.load(pdf_url)
        new_window.show()

    @classmethod
    def show_about_ds(cls):
        dialog = QDialog()
        about = Ui_About()
        about.setupUi(dialog)
        dialog.exec_()

    @classmethod
    def show_message(cls, message: str, logo: str):
        msg = QMessageBox()
        icon = QIcon()
        icon.addFile(u"inc/icon.ico", QSize(), QIcon.Normal, QIcon.Off)
        msg.setWindowIcon(icon)
        if logo == "error":
            msg.setIcon(QMessageBox.Critical)
        elif logo == "info":
            msg.setIcon(QMessageBox.Information)
        msg.setText(message)
        msg.setWindowTitle(logo)
        msg.exec_()

    def closeEvent(self, event):
        model = Model()
        model.close_connection()
        event.accept()
Exemple #22
0
 def __init__(self):
     super(MainWindow, self).__init__()
     self.ui = Ui_QuestionnaireWidget()
     self.ui.setupUi(self)
     scale_bg = QButtonGroup(self)
     scale_bg.addButton(self.ui.awfulCb)
     scale_bg.addButton(self.ui.soSoCb)
     scale_bg.addButton(self.ui.normalCb)
     scale_bg.addButton(self.ui.excellentCb)
     # устанавливаем метод отработки варианта выбора
     scale_bg.buttonClicked.connect(self.checkboxClicked)
class LoginWidget(QWidget, Ui_LoginWidget):
    def __init__(self):
        super(LoginWidget, self).__init__()
        self.setupUi(self)
        self.loginButton.clicked.connect(self.login)
        self.quitButton.clicked.connect(self.quit)
        self.login_type = LoginType.STUDENT
        self.radio_group = QButtonGroup(self)
        self.radio_group.addButton(self.studentRadio, 0)
        self.radio_group.addButton(self.teacherRadio, 1)
        self.studentRadio.setChecked(True)
        self.radio_group.buttonToggled.connect(self.toggle_login_type)
        self.pwdInput.returnPressed.connect(self.login)

    def login(self):
        user_id = self.idInput.text()
        pwd = self.pwdInput.text()
        status = usermgr.login(self.login_type, user_id, pwd)
        if status == 0:
            user_name = usermgr.get_name()
            QMessageBox.information(self, self.tr('Login Successful'),
                                    self.tr('Welcome, {}!'.format(user_name)),
                                    QMessageBox.Ok)
            # print(m)
            # self.hide()
            self.close()
            m = StudentMainWindow(self) if \
                self.login_type == LoginType.STUDENT else \
                    TeacherMainWindow(self)
            m.show()

        else:
            QMessageBox.critical(self, self.tr('Login Failed'),
                                 self.tr('Wrong ID or password!'),
                                 QMessageBox.Ok)

    def toggle_login_type(self, selected_radio: int):
        if selected_radio == self.studentRadio:
            self.login_type = LoginType.STUDENT
        elif selected_radio == self.teacherRadio:
            self.login_type = LoginType.TEACHER

    def quit(self):
        self.close()
Exemple #24
0
class DestinationRadioBox(QGroupBox):
    def __init__(self, destinations):
        super().__init__()
        label = Heading('Card Destination')
        label.setMinimumWidth(WIDTH)
        label.setAlignment(Qt.AlignHCenter)
        box = QVBoxLayout()
        box.addWidget(label)

        # Subclass QGroupBox for the *visual* container
        self.setMaximumWidth(WIDTH_WITH_SCROLL)

        # QButtonGroup is used for the *logical* grouping
        self.b_group = QButtonGroup()

        for button in destinations.values():
            self.b_group.addButton(button)
            box.addWidget(button)
        self.setLayout(box)
Exemple #25
0
    def __init__(self, numwin: int):
        super(QW_NumWin, self).__init__()
        r1 = QRadioButton("one window")
        r1.toggled.connect(self.checked)
        r2 = QRadioButton("two window")
        r2.toggled.connect(self.checked)
        button_group_numwin = QButtonGroup()
        button_group_numwin.addButton(r1)
        button_group_numwin.addButton(r2)

        if numwin == 1:
            r1.setChecked(True)
        else:
            r2.setChecked(True)

        self.layout_numwin = QHBoxLayout()
        self.layout_numwin.addWidget(r1, alignment=Qt.AlignLeft)
        self.layout_numwin.addWidget(r2, alignment=Qt.AlignLeft)
        self.setLayout(self.layout_numwin)
Exemple #26
0
class RadioLayout(QVBoxLayout):
    """Radio buttons layout with QButtonGroup"""
    def __init__(self, buttons, index, parent=None):
        QVBoxLayout.__init__(self)
        self.setSpacing(0)
        self.group = QButtonGroup()
        for i, button in enumerate(buttons):
            btn = QRadioButton(button)
            if i == index:
                btn.setChecked(True)
            self.addWidget(btn)
            self.group.addButton(btn, i)

    def currentIndex(self):
        return self.group.checkedId()

    def setStyleSheet(self, style):
        for btn in self.group.buttons():
            btn.setStyleSheet(style)
Exemple #27
0
class CheckHLayout(QHBoxLayout):
    """Check boxes hlayout with QButtonGroup"""
    def __init__(self, boxes, checks, parent=None):
        QHBoxLayout.__init__(self)
        self.setSpacing(0)
        self.group = QButtonGroup()
        self.group.setExclusive(False)
        for i, (box, check) in enumerate(zip(boxes, checks)):
            cbx = QCheckBox(box)
            cbx.setChecked(eval(check))
            self.addWidget(cbx)
            self.group.addButton(cbx, i)

    def values(self):
        return [cbx.isChecked() for cbx in self.group.buttons()]

    def setStyleSheet(self, style):
        for cbx in self.group.buttons():
            cbx.setStyleSheet(style)
Exemple #28
0
    def __init__(self, parent):
        super(WelcomePage, self).__init__(parent)
        self.parent_wizard = weakref.proxy(parent)
        self.setTitle('Welcome')

        basic_radio = QRadioButton('&Basic')
        basic_radio.setChecked(True)
        self.advanced_radio = QRadioButton('&Advanced')

        group = QButtonGroup(self)
        group.addButton(basic_radio)
        group.addButton(self.advanced_radio)

        grid = QGridLayout(self)
        grid.addWidget(basic_radio, 0, 0)
        grid.addWidget(self.advanced_radio, 1, 0)

        self.registerField('basic', basic_radio)
        self.setLayout(grid)
class ChoiceLanguageDialog(QDialog):
    # 定义选择信号
    choices_language_dialog_signal = Signal(str)

    # 初始化
    def __init__(self, config: ConfigFactory, logger: LoggerFactory, title: str, languages: list):
        super(ChoiceLanguageDialog, self).__init__()
        self.config = config
        self.logger = logger
        self.setWindowTitle(title)
        self.setModal(True)
        self.setWindowFlag(Qt.WindowContextHelpButtonHint, False)
        self.languages = languages
        self.choice_language_button_group = QButtonGroup()
        self.choice_language_button_group.setExclusive(True)
        layout = QVBoxLayout()
        for language_id, language in enumerate(languages):
            # 显示语言提示
            language_item = QRadioButton(language.split(':')[0])
            self.choice_language_button_group.addButton(language_item)
            self.choice_language_button_group.setId(language_item, language_id)
            if language_id == 0:
                language_item.setChecked(True)
                self.language_id = 0
            layout.addWidget(language_item)
        self.choice_language_button_group.buttonClicked.connect(self.language_change)
        self.buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self)
        self.buttons.accepted.connect(self.accept)
        self.buttons.rejected.connect(self.reject)
        layout.addWidget(self.buttons)
        self.setLayout(layout)

    def accept(self):
        # 先关闭对话框,然后发送消息
        super(ChoiceLanguageDialog, self).accept()
        # 发送语言文件
        language = self.languages[self.language_id].split(':')[1]
        self.choices_language_dialog_signal.emit(language)
        self.config.set_config('master', 'surpac_language_cfg', language)

    def language_change(self):
        self.language_id = self.choice_language_button_group.checkedId()
Exemple #30
0
    def __init__(self, parent):
        super().__init__(parent)
        self.parent_wizard = weakref.proxy(parent)

        self.setTitle('Continuous criteria')
        # Radio button, if yes then ask for inputs
        self.yes = QRadioButton(
            '&Yes, there are criteria that needs to be calculated')
        no = QRadioButton(
            'N&o, I will manually give a rating for every choice and criteria')
        no.setChecked(True)

        self.registerField('yes', self.yes)
        self.yes.toggled.connect(self.toggled)

        group = QButtonGroup(self)
        group.addButton(self.yes)
        group.addButton(no)

        # Duplicated from AbstractMultiInputPage
        self.line_edit = QLineEdit()
        self.list_widget = QListWidget()
        self.add_button = QPushButton('&Add criterion')
        self.delete_button = QPushButton('&Delete')

        self.line_edit.setDisabled(True)
        self.list_widget.setDisabled(True)
        self.add_button.setDisabled(True)
        self.delete_button.setDisabled(True)

        self.line_edit.returnPressed.connect(self.add_item)
        self.add_button.clicked.connect(self.add_item)
        self.delete_button.clicked.connect(self.delete_item)

        grid = QGridLayout(self)
        grid.addWidget(self.yes, 0, 0)
        grid.addWidget(no, 1, 0)
        grid.addWidget(self.line_edit, 2, 0)
        grid.addWidget(self.add_button, 2, 1)
        grid.addWidget(self.list_widget, 3, 0)
        grid.addWidget(self.delete_button, 3, 1, Qt.AlignTop)
        self.setLayout(grid)