def __init__(self, parent: QtWidgets.QScrollArea, max_msg_num=1000, label='Console output'): infor_pane_size = (int(config.WINDOW_WIDTH / 3), config.WINDOW_HEIGHT) information_container = init_container(parent=parent, label_position="center", style="background-color: " + config.container_color + ";", size=infor_pane_size) # information_block = init_container(parent=information_container, # style="background-color: " + config.subcontainer_color + ";") self.formLayout = QFormLayout() groupBox = QGroupBox(label) groupBox.setLayout(self.formLayout) self.timestamp_list = [] self.comboList = [] scroll = QtWidgets.QScrollArea() scroll.setWidgetResizable(True) scroll.setWidget(groupBox) # set groupBox to be in the scroll scroll.setFocusPolicy(QtCore.Qt.NoFocus) scroll.ensureWidgetVisible(groupBox) scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) information_container.addWidget(scroll) self.max_msg_num = max_msg_num # TODO remove older messages
def __init__(self, Xe4Thru_worker: workers.Xe4ThruWorker, *args, **kwargs): super().__init__() self.Xe4Thru_worker = Xe4Thru_worker self.Xe4Thru_worker.signal_data.connect( self.control_process_xethru_data) self.main_page = QtWidgets.QVBoxLayout(self) self.setLayout(self.main_page) self.graph_container1 = init_container( parent=self.main_page, vertical=True, label="RF Frame and Baseband Frame", label_bold=True, label_position="lefttop") self.graph_container2 = init_container(parent=self.main_page, vertical=True, label="Clutter Removed frame", label_bold=True, label_position="lefttop") self.graph_container3 = init_container(parent=self.main_page, vertical=True, label="BASEBAND HISTORY", label_bold=True, label_position="lefttop") # plots self.rf_curve, self.baseband_curve = self.init_xethrux4_runtime_view( parent=self.graph_container1, label="Clutter frame") self.clutter_free_rf_curve, self.clutter_free_baseband_curve = self.init_xethrux4_runtime_view( parent=self.graph_container2, label="Clutter free frame") self.xethrux4_ir_spectrogram_display = QGraphicsPixmapItem() self.xethrux4_runtime_view = self.init_spec_view( parent=self.graph_container3, label="XeThruX4", graph=self.xethrux4_ir_spectrogram_display)
def __init__(self, *args, **kwargs): super().__init__() self.main_page = QtWidgets.QVBoxLayout(self) self.setLayout(self.main_page) self.graph_container1 = init_container(parent=self.main_page, vertical=True, label="BASEBAND AMPLITUDE", label_bold=True, label_position="lefttop") self.graph_container2 = init_container(parent=self.main_page, vertical=True, label="BASEBAND PHASE", label_bold=True, label_position="lefttop") self.graph_container3 = init_container(parent=self.main_page, vertical=True, label="BASEBAND HISTORY", label_bold=True, label_position="lefttop") self.show()
def init_detection_text_block(parent, bold=False, font=14): vl = init_container(parent, style="background-color: white;") # a vertical layout lb_write = QLabel() lb_write.setAlignment(QtCore.Qt.AlignCenter) lb_write.setStyleSheet("font: 32px;") lb_write.setText("You wrote") vl.addWidget(lb_write) lb_char_written = QLabel() lb_char_written.setAlignment(QtCore.Qt.AlignCenter) lb_char_written.setStyleSheet("font: bold 56px;") lb_char_written.setText('... nothing') vl.addWidget(lb_char_written) return lb_char_written
def init_countdown_block(parent, label=None, bold=False, font=14): vl = init_container(parent, style="background-color: white;") # a vertical layout ql = QLabel() if label: if bold: ql.setStyleSheet("font: bold " + str(font) + "px;") elif not bold: ql.setStyleSheet("font: " + str(font) + "px;") # always in the center ql.setAlignment(QtCore.Qt.AlignCenter) ql.setText(label) vl.addWidget(ql) return vl, ql
def init_slider_bar_box(parent, label=None, vertical=False, label_bold=False, min_value=1,max_value=5): line_container = init_container(parent=parent, vertical=vertical) if label: ql = QLabel() if label_bold: ql.setStyleSheet("font: bold 14px;") else: ql.setStyleSheet("font: 14px;") ql.setText(label) line_container.addWidget(ql) # slider with interval slider_view = LabeledSlider(minimum=min_value, maximum=max_value) slider_view.setFocusPolicy(Qt.StrongFocus) line_container.addWidget(slider_view) return line_container, slider_view
def __init__(self): super().__init__() self.main_page = QHBoxLayout(self) self.operation_block = init_container(parent=self.main_page, vertical=False) # Initialize tab screen tabs = QTabWidget() tab1 = Recording() tab2 = Train() tab3 = Detection() tabs.addTab(tab1, config.operation_recording_label) tabs.addTab(tab2, config.operation_training_label) tabs.addTab(tab3, config.operation_detection_label) # Add tabs to main_widget self.operation_block.addWidget(tabs) self.setLayout(self.main_page) self.show()
def init_smooth_slider(parent, slider_min, slider_max, slider_tick_interval, label=None, vertical=False, label_bold=False, onChange_func=None): line_container = init_container(parent=parent, vertical=vertical) if label: ql = QLabel() if label_bold: ql.setStyleSheet("font: bold 14px;") else: ql.setStyleSheet("font: 14px;") ql.setText(label) line_container.addWidget(ql) sl = QSlider(Qt.Horizontal) sl.setMinimum(slider_min) sl.setMaximum(slider_max) sl.setTickPosition(QSlider.TicksBelow) sl.setTickInterval(slider_tick_interval) if onChange_func is not None: sl.valueChanged.connect(onChange_func) line_container.addWidget(sl) return sl
def init_instruction_text_block(parent, bold=False, font=14): vl = init_container(parent, style="background-color: white;") # a vertical layout lb_write = QLabel() lb_write.setAlignment(QtCore.Qt.AlignCenter) lb_write.setStyleSheet("font: 32px;") lb_write.setText("Write") vl.addWidget(lb_write) lb_char_to_write = QLabel() lb_char_to_write.setAlignment(QtCore.Qt.AlignCenter) lb_char_to_write.setStyleSheet("font: bold 56px;") lb_char_to_write.setText('...') vl.addWidget(lb_char_to_write) lb_char_next = QLabel() lb_char_next.setAlignment(QtCore.Qt.AlignCenter) lb_char_next.setStyleSheet("font: italic 24px;") lb_char_next.setText(config.instruction_next_text + '...') vl.addWidget(lb_char_next) return lb_char_to_write, lb_char_next
def __init__(self, record_signal, mmw_signal, *args, **kwargs): super().__init__() self.main_page = QHBoxLayout(self) self.operation_block = init_container(parent=self.main_page, vertical=False) # Initialize tab screen tabs = QTabWidget() self.tab_recording = IdpRecording(record_signal) self.tab_training = IdpTrain() self.tab_detection = IdpDetection(mmw_signal) tabs.addTab(self.tab_recording, config.operation_recording_label) tabs.addTab(self.tab_training, config.operation_training_label) tabs.addTab(self.tab_detection, config.operation_detection_label) # Add tabs to main_widget self.operation_block.addWidget(tabs) self.setLayout(self.main_page) self.show()
def init_preparation_block(parent, text): vl = init_container(parent, style="background-color: white;") # a vertical layout ql1 = QLabel() ql1.setStyleSheet("font: 18px;") ql1.setAlignment(QtCore.Qt.AlignCenter) ql1.setText("You will be writing: ") ql2 = QLabel() ql2.setStyleSheet("font: 14px;") ql2.setAlignment(QtCore.Qt.AlignCenter) ql2.setText(text) ql3 = QLabel() ql3.setStyleSheet("font: 18px;") ql3.setAlignment(QtCore.Qt.AlignCenter) ql3.setText("Press Enter To Continue") vl.addWidget(ql1) vl.addWidget(ql2) vl.addWidget(ql3) return vl
def __init__(self): super().__init__() # default range self.range_min = 0 self.range_max = 0.4 # for checking only one freq box self._toggle = None self.state = ['idle'] # see the docstring of self.update_state for details self.background = QVBoxLayout(self) self.setLayout(self.background) self.main_page = init_container(parent=self.background, vertical=True, style="background-color:" + config.container_color + ";") # - device (combo box) self.device = init_combo_box(parent=self.main_page, label="Device", item_list=["X4M300", "X4M200", "X4M03"]) self.device.activated[str].connect(self.device_onChanged) # - port (input box) self.XeThruX4_port_block, self.XeThruX4_port_textbox = init_inputBox(parent=self.main_page, label="Port (device_name): ", label_bold=True, default_input="Default: COM8") self.freq_block = init_container(parent=self.main_page, label="Frequency Band", vertical=False) # - frequency band (check box) self.low_freq_checkbox = init_checkBox(parent=self.freq_block, label="Low (7.290 GHz)", function=self.low_freq_action) self.high_freq_checkbox = init_checkBox(parent=self.freq_block, label="High (8.748 GHz)", function=self.high_freq_action) # - range (input boxes) self.range_container = init_container(parent=self.main_page, label="Range (m) [0.5 ~ 3]", label_bold=True, vertical=False) self.min_range_block, self.min_range_textbox = init_inputBox(parent=self.range_container, label="Min:", label_bold=False, default_input="0") self.min_range_textbox.textChanged.connect(self.check_range) self.max_range_block, self.max_range_textbox = init_inputBox(parent=self.range_container, label="Max:", label_bold=False, default_input="0.4") self.max_range_textbox.textChanged.connect(self.check_range) # - fps ( bar) self.fps_block, self.fps_slider_view = init_slider_bar_box(self.main_page, label="FPS", vertical=True, label_bold=True, min_value=10, max_value=25) self.fps_slider_view.setValue(23) # - check box self.baseband_block = init_container(parent=self.main_page, label="Baseband", vertical=True) self.baseband_checkbox = init_checkBox(parent=self.baseband_block, function=self.baseband_checkbox_function) # - two buttons self.buttons_block = init_container(self.main_page, vertical=False) self.start_stop__btn = init_button(parent=self.buttons_block, label="Start/stop sensor", function=self.start_stop_btn_action) self.reset_btn = init_button(parent=self.buttons_block, label="Reset to default", function=self.reset_btn_action) self.show()