def initUI(self): ### below commented out on 2020.2.24 ''' self.clientButton1chan = QtWidgets.QPushButton('Predict (EEG only)', self) self.clientButton1chan.setCheckable(True) # self.channelNumForPrediction = 1 self.clientButton1chan.clicked.connect(self.predictionStateOnEEGonly) self.clientButton1chan.resize(self.clientButton1chan.sizeHint()) self.clientButton1chan.move(5, 10) ''' self.clientButton2chan = QtWidgets.QPushButton('Predict (EEG + Ch.2)', self) self.clientButton2chan.setCheckable(True) # self.channelNumForPrediction = 2 self.clientButton2chan.clicked.connect(self.predictionStateOnEEGandCh2) self.clientButton2chan.resize(self.clientButton2chan.sizeHint()) ### self.clientButton2chan.move(145, 10) self.clientButton2chan.move(5, 10) ''' self.methodName = self.str_method_deep method_combobox = QtWidgets.QComboBox(self) method_combobox.addItem(self.str_method_deep) method_combobox.addItem(self.str_method_classical) method_combobox.addItem(self.str_method_rf) method_combobox.move(335, 10) method_combobox.activated[str].connect(self.method_choice) ''' checkConnectionButton = QtWidgets.QPushButton('Check connection', self) checkConnectionButton.clicked.connect(self.check_connection) checkConnectionButton.resize(checkConnectionButton.sizeHint()) checkConnectionButton.move(440, 10) ''' self.nameLabel_eeg = QLabel(self) self.nameLabel_eeg.setText('EEG std:') self.nameLabel_eeg.move(10, 35) self.eeg_std = QLineEdit(self) self.eeg_std.move(65, 40) self.eeg_std.resize(30, 20) self.nameLabel_ch2 = QLabel(self) self.nameLabel_ch2.setText('Ch.2 std:') self.nameLabel_ch2.move(105, 35) self.ch2_std = QLineEdit(self) self.ch2_std.move(160, 40) self.ch2_std.resize(30, 20) ''' self.nameLabel_ch2_mode_label = QLabel(self) self.nameLabel_ch2_mode_label.setText('Mode:') self.nameLabel_ch2_mode_label.move(10, 35) if self.params.useCh2ForReplace: self.ch2_mode = self.ch2_mode_str_video else: self.ch2_mode = self.ch2_mode_str_none self.ch2_mode_combobox = QtWidgets.QComboBox(self) self.ch2_mode_combobox.addItem(self.ch2_mode_str_video) self.ch2_mode_combobox.addItem(self.ch2_mode_str_emg) self.ch2_mode_combobox.addItem(self.ch2_mode_str_none) self.ch2_mode_combobox.move(50, 38) self.ch2_mode_combobox.activated[str].connect(self.ch2_mode_choice) self.nameLabel_ch2_thresh = QLabel(self) self.nameLabel_ch2_thresh.setText('Thresh for R->W:') self.nameLabel_ch2_thresh.move(160, 35) self.nameLabel_ch2_thresh.resize(125, 20) self.ch2_thresh = QLineEdit(self) self.ch2_thresh.setText(str(self.params.ch2_thresh_default)) self.ch2_thresh.move(270, 40) self.ch2_thresh.resize(30, 20) self.ch2_thresh_slider = QSlider(Qt.Horizontal, self) self.ch2_thresh_slider.move(310, 35) self.ch2_thresh_slider.resize(220, 20) self.ch2_thresh_slider.setMinimum(-8) self.ch2_thresh_slider.setMaximum(16) self.ch2_thresh_slider.setValue(4) self.ch2_thresh_slider.setTickPosition(QSlider.TicksBelow) self.ch2_thresh_slider.setTickInterval(1) self.ch2_thresh_slider.valueChanged.connect(self.ch2_thresh_change) self.font = QtGui.QFont() self.font.setPointSize(18) self.font.setBold(True) self.font.setWeight(75) self.nameLabel_chi2 = QLabel(self) self.nameLabel_chi2.setText('KS chi2:') self.nameLabel_chi2.move(540, 35) self.nameLabel_chi2.setFont(self.font) self.chi2ResLabel = QLabel(self) self.chi2ResLabel.move(620, 35) self.chi2ResLabel.resize(70, 30) self.chi2ResLabel.setFont(self.font) self.dHist = DynamicGraphCanvas4KSHist(self, width=1.5, height=0.8, dpi=100) self.dHist.move(690, 5) self.dGraph = DynamicGraphCanvas4KS(self, width=4.5, height=0.8, dpi=100) self.dGraph.move(830, 5) self.nameLabel_d = QLabel(self) self.nameLabel_d.setText('d:') self.nameLabel_d.move(520, 60) self.nameLabel_d.setFont(self.font) self.dResLabel = QLabel(self) self.dResLabel.move(580, 60) self.dResLabel.resize(90, 30) self.dResLabel.setFont(self.font) self.waveRecordButton = QtWidgets.QPushButton(self.label_recordWaves, self) self.waveRecordButton.clicked.connect(self.toggleWaveRecord) self.waveRecordButton.resize(self.waveRecordButton.sizeHint()) self.waveRecordButton.update() self.waveRecordButton.move(10, 60) self.waveRecordButton.setCheckable(True) self.waveNotRecordButton = QtWidgets.QPushButton(self.label_notRecordWaves, self) self.waveNotRecordButton.clicked.connect(self.toggleWaveNotRecord) self.waveNotRecordButton.resize(self.waveNotRecordButton.sizeHint()) self.waveNotRecordButton.update() self.waveNotRecordButton.move(180, 60) self.waveNotRecordButton.setCheckable(True) if self.recordWaves: self.toggleWaveRecord() else: self.toggleWaveNotRecord() quitButton = QtWidgets.QPushButton('Quit Application', self) ### commented out on 2020.2.24 ### quitButton.clicked.connect(self.stop_reader) quitButton.clicked.connect(QtCore.QCoreApplication.instance().quit) quitButton.resize(quitButton.sizeHint()) quitButton.move(350, 60) self.listOfPredictionResults = [] self.listOfGraphs = [] self.listOfGraphs.append([]) self.listOfGraphs.append([]) for graphID in range(self.graphNum): self.listOfPredictionResults.append(PredictionResultLabel(self)) predXLoc = (graphID * 300) + 110 predYLoc = 100 self.listOfPredictionResults[graphID].move(predXLoc, predYLoc) xLoc = (graphID * 300) + 10 for chanID in range(2): yLoc = (chanID * 200) + 140 self.listOfGraphs[chanID].append(DynamicGraphCanvas(self, width=3, height=2, dpi=100)) self.listOfGraphs[chanID][graphID].move(xLoc, yLoc) self.setWindowTitle('Sleep Staging') xSize = self.graphNum * 310 self.resize(xSize, 600) self.show() self.activateWindow() statusbar = self.statusBar() self.readFromDaq = False try: if len(args) > 5: print('Too many arquments for running app.py.') quit() self.sleepTime = float(args[4]) if len(args) > 4 else self.defaultSleepTime self.offsetWindowID = int(args[3]) if len(args) > 3 else 0 self.inputFileID = args[2] if len(args) > 2 else self.randomlySelectInputFileID() if len(args) > 1: classifierID = args[1] if classifierID == 'm': classifierID = self.randomlySelectClassifierID() self.client = ClassifierClient(self.recordWaves, self.extractorType, self.classifierType, classifierID, self.inputFileID, self.offsetWindowID) else: # Neither classifierID nor inputFileID are specified. self.readFromDaq = True classifierID = self.randomlySelectClassifierID() print('Data is read from DAQ. classifier ID is randomly selected.') self.client = ClassifierClient(self.recordWaves, self.extractorType, self.classifierType, classifierID) self.client.hasGUI = True except Exception as e: print('Exception in self.client = ...') statusbar.showMessage(str(e)) raise e
def reset_canvas_action(self): self.item_cnt = 0 self.statusBar().showMessage('重置画布') dialog = QDialog() dialog.setWindowTitle('重置画布') formlayout = QFormLayout(dialog) box1 = QSpinBox(dialog) box1.setRange(100, 1000) box1.setSingleStep(1) box1.setValue(self.w) slider1 = QSlider(Qt.Horizontal) slider1.setRange(100, 1000) slider1.setSingleStep(1) slider1.setValue(self.w) slider1.setTickPosition(QSlider.TicksBelow) slider1.setTickInterval(100) box2 = QSpinBox(dialog) box2.setRange(100, 1000) box2.setSingleStep(1) box2.setValue(self.h) slider2 = QSlider(Qt.Horizontal) slider2.setRange(100, 1000) slider2.setSingleStep(1) slider2.setValue(self.h) slider2.setTickPosition(QSlider.TicksBelow) slider2.setTickInterval(100) slider1.valueChanged.connect(box1.setValue) box1.valueChanged.connect(slider1.setValue) slider2.valueChanged.connect(box2.setValue) box2.valueChanged.connect(slider2.setValue) formlayout.addRow('Width:', box1) formlayout.addRow(slider1) formlayout.addRow('Height:', box2) formlayout.addRow(slider2) box3 = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) box3.accepted.connect(dialog.accept) box3.rejected.connect(dialog.reject) formlayout.addRow(box3) if dialog.exec(): if (box1.value() < 100 or box1.value() > 1000 or box2.value() < 100 or box2.value() > 1000): QMessageBox.about(self, "提示", "修改失败,请保证输入的数字大于等于100小于等于1000") else: self.w = box1.value() self.h = box2.value() self.canvas_widget.clear_canvas() self.list_widget.clearSelection() self.canvas_widget.clear_selection() self.list_widget.clear() self.scene = QGraphicsScene(self) self.scene.setSceneRect(0, 0, self.w, self.h) self.canvas_widget.resize(self.w, self.h) self.canvas_widget.setFixedSize(self.w, self.h) self.statusBar().showMessage('空闲') self.setMaximumHeight(self.h) self.setMaximumWidth(self.w) self.resize(self.w, self.h) self.canvas_widget.undo_num = 0 self.canvas_widget.undo_save = []
def InitWindowGrid(self): self.timer = QTimer(self) self.timer.setSingleShot(False) self.timer.setInterval(constants.DEF_TIMEOUT / 100) self.timer.timeout.connect(self.signal) h_layout_main = QHBoxLayout() h_right_layout = QHBoxLayout() v_right_layout = QVBoxLayout() # правый макет с элементами управления start_button = QPushButton('Start', self) start_button.clicked.connect(self.start_timer) stop_button = QPushButton('Stop', self) stop_button.clicked.connect(self.stop_timer) h_right_layout.addWidget(start_button) h_right_layout.addWidget(stop_button) gr_layout = QGridLayout() gr_layout.setSpacing(20) gr_layout.addWidget(QWidget()) self.lcd = QLabel(f'Кол-во эл.: {self.count_bar_items}', self) self.lcd.setStyleSheet('color: white') self.lb_speed = QLabel(f'Шаг каждые: {constants.DEF_TIMEOUT / 1000}(мс)') self.lb_speed.setStyleSheet('color: white') sld = QSlider(Qt.Horizontal, self) sld.valueChanged.connect(self.slider_value_changed) sld.setMinimum(1) sld.setMaximum(1000) sld.setSingleStep(1) sld.setValue(100) sld_speed = QSlider(Qt.Horizontal, self) sld_speed.valueChanged.connect(self.set_timer_interval) sld_speed.setMinimum(1) sld_speed.setMaximum(100000) sld_speed.setSingleStep(1) sld_speed.setValue(constants.DEF_TIMEOUT) v_right_layout.addLayout(h_right_layout) v_right_layout.addWidget(self.lcd) v_right_layout.addWidget(sld) q_grid_boxes = QGridLayout() row, col = 0, 0 for i, sub_class in enumerate(self.get_alghoritms()): ch_box = QCheckBox(sub_class.NAME, self) ch_box.setStyleSheet('color: white') self.selected_algh[sub_class.NAME] = False ch_box.stateChanged.connect(self.add_q_box_signal(i, sub_class.NAME)) if col >= 2: row += 1 col = 0 q_grid_boxes.addWidget(ch_box, row, col) col += 1 v_right_layout.addLayout(q_grid_boxes) v_right_layout.addWidget(self.lb_speed) v_right_layout.addWidget(sld_speed) v_right_layout.addWidget(QWidget(), 5) h_layout_main.addLayout(gr_layout, 5) h_layout_main.addLayout(v_right_layout, 1) widget = QWidget() palette = widget.palette() widget.setAutoFillBackground(True) palette.setColor(widget.backgroundRole(), Qt.black) widget.setPalette(palette) widget.setLayout(h_layout_main) self.main_layout = gr_layout self.setCentralWidget(widget)
def initUI(self): self.setWindowTitle('test') window_width = GetSystemMetrics(0) window_height = GetSystemMetrics(1) self.resize(0.7 * window_width, 0.7 * window_height) self.center() self.setWindowIcon(QIcon('Icon.png')) #inits self.openDirectoryDialog = "" self.data = np.empty(shape=(1, 2), dtype=np.float) self.setMinimumSize(QSize(640, 480)) self.setWindowTitle("Регрессионный анализ одномерных данных") centralWidget = QWidget(self) self.setCentralWidget(centralWidget) #Exit on menubar exitAct = QAction('&Exit', self) exitAct.setShortcut('Ctrl+Q') exitAct.setStatusTip('Exit applicatiion') exitAct.triggered.connect(qApp.quit) #Open on menubar openAct = QAction('&Open', self) openAct.setShortcut('Ctrl+O') openAct.setStatusTip('Open Directory') openAct.triggered.connect(self.openFile) openAct.triggered.connect(lambda: plotCan.plot_loaded(self.data)) #menubar menubar = self.menuBar() fileMenu = menubar.addMenu('&File') fileMenu.addAction(exitAct) fileMenu.addAction(openAct) #Central #centralwidget = QWidget(self) #self.setCentralWidget(centralwidget) #Grid #grid = QGridLayout(centralwidget) #self.setLayout(grid) #Plot plotCan = PlotCanvas(self, width=10.88, height=7.48) #grid.addWidget(plotCan, 0,1) plotCan.move(250, 0) self.pc = PlotCanvas(self, width=10.88, height=7.48) self.pc.move(250, 0) #Закон распределения СВ self.label_4 = QtWidgets.QLabel(self) self.label_4.setGeometry(QtCore.QRect(10, 475, 110, 25)) self.label_4.setText("Выбор закона СВ") #Закон распределения СВ self.comboBox = QtWidgets.QComboBox(self) self.comboBox.setGeometry(QtCore.QRect(10, 500, 110, 25)) self.comboBox.addItems([ 'Нормальный', 'Равномерный', ]) self.comboBox.activated[str].connect(self.rename_sv_params) #self.comboBox.activated[str].connect(self.show_params) #Способ добавления СВ self.label = QtWidgets.QLabel(self) self.label.setGeometry(QtCore.QRect(130, 475, 110, 25)) self.label.setText("Способ доб. СВ") #Способ добавления СВ self.comboBox2 = QtWidgets.QComboBox(self) self.comboBox2.setGeometry(QtCore.QRect(130, 500, 110, 25)) self.comboBox2.addItems(['None', 'Additive', 'Multiplicative']) #self.comboBox2.activated[str].connect(self.show_params) #parameter1 СВ self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self) self.doubleSpinBox.setGeometry(QtCore.QRect(45, 530, 75, 25)) self.doubleSpinBox.setSingleStep(0.01) #parameter1 СВ self.label_2 = QtWidgets.QLabel(self) self.label_2.setGeometry(QtCore.QRect(10, 530, 34, 24)) self.label_2.setText("μ") #parameter2 СВ self.doubleSpinBox_2 = QtWidgets.QDoubleSpinBox(self) self.doubleSpinBox_2.setGeometry(QtCore.QRect(45, 560, 75, 25)) self.doubleSpinBox_2.setValue(1) self.doubleSpinBox_2.setSingleStep(0.01) #parameter2 СВ self.label_3 = QtWidgets.QLabel(self) self.label_3.setGeometry(QtCore.QRect(10, 560, 34, 24)) self.label_3.setText("σ") self.slider = QSlider(Qt.Horizontal, self) self.slider.setGeometry(QtCore.QRect(150, 530, 70, 30)) self.slider.setMinimum(0) self.slider.setMaximum(100) self.slider.setValue(90) self.slider.setTickPosition(QSlider.TicksBelow) self.slider.setTickInterval(20) self.label_5 = QtWidgets.QLabel(self) self.label_5.setGeometry(QtCore.QRect(130, 560, 120, 24)) self.label_5.setText("Случайность: 10%") self.label_6 = QtWidgets.QLabel(self) self.label_6.setGeometry(QtCore.QRect(130, 590, 120, 24)) self.label_6.setText("Опред-ть: 90%") self.slider.valueChanged.connect(self.valuechange) #button #btn = QPushButton("Load Data", self) #btn.move(100,200) #btn.setVisible(True) #btn.resize(btn.sizeHint()) #grid.addWidget(btn, 1,0) #btn.clicked.connect(lambda: plotCan.plot(self.data)) #good self.btn5 = QPushButton("Построить тренд", self) self.btn5.move(120, 350) self.btn5.resize(125, 25) self.btn5.clicked.connect(lambda: self.pc.plot_determined( self.slider, self.comboBox, self.comboBox2, self.doubleSpinBox, self.doubleSpinBox_2, self.combo1, self.spin1, self.param1, self. param2, self.param3)) self.spin1 = QSpinBox(self) self.spin1.move(8, 350) self.spin1.resize(100, 25) self.spin1.setRange(5, 9999) self.spin1.setValue(100) self.param1_label = QLabel(self) self.param1_label.move(8, 375) self.param1_label.setText("a") self.param1 = QLineEdit(self) self.param1.move(8, 400) self.param1.resize(50, 20) self.param1.setText('1') self.param2_label = QLabel(self) self.param2_label.move(65, 375) self.param2_label.setText("b") self.param2 = QLineEdit(self) self.param2.move(65, 400) self.param2.resize(50, 20) self.param2.setText('1') self.param3_label = QLabel(self) self.param3_label.move(138, 375) self.param3_label.setText("c") self.param3_label.resize(0, 0) self.param3 = QLineEdit(self) self.param3.move(138, 400) self.param3.resize(0, 0) self.param3.setText('1') self.combo1 = QComboBox(self) self.combo1.move(8, 300) self.combo1.resize(150, 25) self.combo1.addItems([ 'Линейный', 'Параболический', 'Гиперболический', 'Экспоненциальный', 'Показательный', 'Степенной', 'Логарифмический', 'Гармонический' ]) self.combo1.activated[str].connect(self.show_params) #label self.eq_label = QLabel(self) self.eq_label.move(8, 30) #self.eq_label.setText('Fit') self.eq_label.setGeometry(QtCore.QRect(25, 0, 500, 100)) #(x, y, width, height) self.eq_label.setText("y=a+b*t") #combobox self.combo = QComboBox(self) self.combo.move(8, 70) self.combo.resize(235, 25) self.combo.addItems([ 'Линейный', 'Параболический', 'Гиперболический', 'Экспоненциальный', 'Показательный', 'Степенной', 'Логарифмический', 'Гармонический' ]) self.combo.activated[str].connect(self.combobox_changed) self.btn2 = QPushButton('Fit Regression', self) self.btn2.move(8, 160) self.btn2.resize(235, 30) self.btn2.setText('Оценить линейный тренд') self.btn2.setEnabled(False) self.btn2.clicked.connect(self.fit_regression) #self.btn2.clicked.connect(lambda: plotCan.plot(self.data)) self.btn2.clicked.connect(lambda: self.pc.plot_fitted( self.estimator, self.combo, self.data)) #plot fitted self.btn_all = QPushButton('Всех посмотреть', self) self.btn_all.move(8, 200) self.btn_all.resize(115, 30) self.btn_all.setText('Всех посмотреть') self.btn_all.setEnabled(False) self.btn_all.clicked.connect(self.find_all) self.btn_best = QPushButton('Взять лучшую', self) self.btn_best.move(128, 200) self.btn_best.resize(115, 30) self.btn_best.setText('Взять лучшую') self.btn_best.setEnabled(False) self.btn_best.clicked.connect(self.find_best) btn3 = QPushButton('Open file', self) btn3.move(8, 100) btn3.resize(235, 30) #btn3.clicked.connect(lambda: plotCan.clear(self)) btn3.clicked.connect(self.pc.clear) btn3.clicked.connect(self.openFile) #btn3.clicked.connect(lambda: plotCan.clear(self)) btn3.clicked.connect(self.pc.clear) btn3.clicked.connect(lambda: self.pc.plot_loaded(self.data)) #btn3.clicked.connect(lambda: plotCan.plot_loaded(self.data)) #btn3.clicked.connect(self.pc.plot_loaded(data)) #btn3.clicked.connect(lambda: plotCan.plot(self.data)) btn4 = QPushButton('Clear', self) btn4.move(8, 130) btn4.resize(235, 30) #btn4.clicked.connect(lambda: plotCan.clear(self)) btn4.clicked.connect(self.pc.clear) self.show()
def createUI(self, path, pos=[0,0]): # Settings window_gap = 25 v_gap = 10 title_h = 25 img_size = [100, 100] img_gap = [25, 25] slider_h = 20 w_size = [ img_size[0] * 3 + window_gap * 2 + img_gap[0] * 2, img_size[1] + window_gap * 3 + v_gap * 5 + slider_h * 2 + title_h * 2 ] # General setup self._path = path self.setGeometry( pos[0] - w_size[0] / 2, pos[1] - w_size[1] / 2, w_size[0], w_size[1] ) y = window_gap # Hyperion Control Title title_stylesheet = "font-size: 18pt;border: 0;" title = QLabel("Hyperion", self) title.setGeometry(window_gap, y, w_size[0] - window_gap * 2, title_h) title.setAlignment(Qt.AlignCenter) title.setStyleSheet(title_stylesheet) title.show() y += title_h + v_gap # Screen Capture Button self._monitor = QPushButton('', self) self._monitor.setIcon(QIcon(path + '/Resources/Hyperion/Monitor.png')) self._monitor.setIconSize(QSize(img_size[0], img_size[1])) self._monitor.setGeometry(window_gap, y, img_size[0], img_size[1]) self._monitor.setStyleSheet('border: none;') self._monitor.clicked.connect(lambda:self.onClickMonitor()) self._monitor.show() # Notifcations Button self._notifications = QPushButton('', self) self._notifications.setIconSize(QSize(img_size[0], img_size[1])) self._notifications.setGeometry(img_size[0] + window_gap + img_gap[0], y, img_size[0], img_size[1]) self._notifications.setStyleSheet('border: none;') self._notifications.clicked.connect(lambda:self.onClickNotifications()) if Hyperion().notifications: self._notifications.setIcon(QIcon(self._path + '/Resources/Hyperion/Bell.png')) else: self._notifications.setIcon(QIcon(self._path + '/Resources/Hyperion/Bell-crossed.png')) self._notifications.show() # Mood Lamp Button self._lamp = QPushButton('', self) self._lamp.setIcon(QIcon(path + '/Resources/Hyperion/Lamp.png')) self._lamp.setIconSize(QSize(img_size[0], img_size[1])) self._lamp.setGeometry(img_size[0] * 2 + window_gap + img_gap[0] * 2, y, img_size[0], img_size[1]) self._lamp.setStyleSheet('border: none;') self._lamp.clicked.connect(lambda:self.onClickLamp()) self._lamp.show() y+= img_size[1] + v_gap # Hyperion Brightness Control sliderStylesheet = ( "QSlider{" "background-color: transparent;" "border-style: outset;" "border-radius: 15px;" "border: transparent;" "}" "QSlider::groove:horizontal{" "height: 24px;" "background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4);" "margin: 2px 0;" "border-radius:10px;" "}" "QSlider::handle:horizontal {" "width: 32px;" "height: 32px;" "margin: -5px 0px -5px 0px;" "border-radius:15px;" "background-color:#0043a1;" "border: 3px solid #0043a1;" "}" ) self.lights_brightness_slider = QSlider(Qt.Horizontal, self) self.lights_brightness_slider.setFocusPolicy(Qt.NoFocus) self.lights_brightness_slider.setTickPosition(QSlider.NoTicks) self.lights_brightness_slider.setGeometry( window_gap, y, w_size[0] - window_gap * 2, window_gap ) self.lights_brightness_slider.setStyleSheet(sliderStylesheet) self.lights_brightness_slider.setMinimum(0); self.lights_brightness_slider.setMaximum(100); self.lights_brightness_slider.valueChanged.connect(self.onClickSetLightsBrightness) self.lights_brightness_slider.setTracking(False) self.lights_brightness_slider.show() y += slider_h + window_gap # Monitor Control Title title_stylesheet = "font-size: 18pt;border: 0;" title = QLabel("Monitor", self) title.setGeometry(window_gap, y, w_size[0] - window_gap * 2, title_h) title.setAlignment(Qt.AlignCenter) title.setStyleSheet(title_stylesheet) title.show() y += title_h + v_gap # Monitor Brightness Control self.monitor_brightness_slider = QSlider(Qt.Horizontal, self) self.monitor_brightness_slider.setFocusPolicy(Qt.NoFocus) self.monitor_brightness_slider.setTickPosition(QSlider.NoTicks) self.monitor_brightness_slider.setGeometry( window_gap, y, w_size[0] - window_gap * 2, window_gap ) self.monitor_brightness_slider.setStyleSheet(sliderStylesheet) self.monitor_brightness_slider.setMinimum(0); self.monitor_brightness_slider.setMaximum(100); self.monitor_brightness_slider.valueChanged.connect(self.onClickSetMonitorBrightness) self.monitor_brightness_slider.setTracking(False) self.monitor_brightness_slider.show()
def _createView(self): """Create the view.""" layout = QVBoxLayout() self.le_league = MonitoredLineEdit() self.le_league.setText("League TBD") self.le_league.setAlignment(Qt.AlignCenter) self.le_league.setPlaceholderText("League TBD") self.le_league.textModified.connect(self.league_changed) policy = QSizePolicy() policy.setHorizontalStretch(3) policy.setHorizontalPolicy(QSizePolicy.Expanding) policy.setVerticalStretch(1) policy.setVerticalPolicy(QSizePolicy.Fixed) self.le_league.setSizePolicy(policy) self.le_league.setContextMenuPolicy(Qt.CustomContextMenu) self.le_league.customContextMenuRequested.connect( self.openLeagueContextMenu) self.le_team = [MonitoredLineEdit() for y in range(2)] self.le_player = [[MonitoredLineEdit() for x in range( self.max_no_sets)] for y in range(2)] self.cb_race = [[QComboBox() for x in range(self.max_no_sets)] for y in range(2)] self.sl_score = [QSlider(Qt.Horizontal) for y in range(self.max_no_sets)] self.le_map = [MapLineEdit() for y in range(self.max_no_sets)] self.label_set = [QPushButton('#{}'.format(y + 1), self) for y in range(self.max_no_sets)] self.setContainer = [QHBoxLayout() for y in range(self.max_no_sets)] container = QHBoxLayout() for team_idx in range(2): self.le_team[team_idx].setText("TBD") self.le_team[team_idx].setAlignment( Qt.AlignCenter) self.le_team[team_idx].setPlaceholderText( "Team " + str(team_idx + 1)) policy = QSizePolicy() policy.setHorizontalStretch(4) policy.setHorizontalPolicy( QSizePolicy.Expanding) policy.setVerticalStretch(1) policy.setVerticalPolicy(QSizePolicy.Fixed) self.le_team[team_idx].setSizePolicy(policy) self.le_team[team_idx].setMinimumWidth(self.mimumLineEditWidth) self.le_team[team_idx].textModified.connect( lambda team_idx=team_idx: self.team_changed(team_idx)) self.le_team[team_idx].setContextMenuPolicy(Qt.CustomContextMenu) self.le_team[team_idx].customContextMenuRequested.connect( lambda x, team_idx=team_idx: self.openTeamContextMenu(team_idx)) self.qb_logo1 = IconPushButton() self.qb_logo1.setFixedWidth(self.raceWidth) self.qb_logo1.clicked.connect(lambda: self.parent.logoDialog(1, self)) logo = self.controller.logoManager.getTeam1(self._ctrlID) self.qb_logo1.setIcon(QIcon(logo.provideQPixmap())) self.qb_logo2 = IconPushButton() self.qb_logo2.setFixedWidth(self.raceWidth) self.qb_logo2.clicked.connect(lambda: self.parent.logoDialog(2, self)) logo = self.controller.logoManager.getTeam2(self._ctrlID) self.qb_logo2.setIcon(QIcon(logo.provideQPixmap())) self.sl_team = QSlider(Qt.Horizontal) self.sl_team.setTracking(False) self.sl_team.setMinimum(-1) self.sl_team.setMaximum(1) self.sl_team.setValue(0) self.sl_team.setTickPosition( QSlider.TicksBothSides) self.sl_team.setTickInterval(1) self.sl_team.valueChanged.connect(lambda x: self.sl_changed(-1, x)) self.sl_team.setToolTip(_('Choose your team')) self.sl_team.setMinimumHeight(5) self.sl_team.setFixedWidth(self.scoreWidth) policy = QSizePolicy() policy.setHorizontalStretch(0) policy.setHorizontalPolicy(QSizePolicy.Fixed) policy.setVerticalStretch(1) policy.setVerticalPolicy(QSizePolicy.Fixed) self.sl_team.setSizePolicy(policy) container = QGridLayout() self.pb_swap = QPushButton() pixmap = QIcon( scctool.settings.getResFile('update.png')) self.pb_swap.setIcon(pixmap) self.pb_swap.clicked.connect(self.controller.swapTeams) self.pb_swap.setFixedWidth(self.labelWidth) self.pb_swap.setToolTip(_("Swap teams and logos.")) container.addWidget(self.pb_swap, 0, 0, 2, 1) label = QLabel(_("League:")) label.setAlignment(Qt.AlignCenter) policy = QSizePolicy() policy.setHorizontalStretch(4) policy.setHorizontalPolicy(QSizePolicy.Expanding) policy.setVerticalStretch(1) policy.setVerticalPolicy(QSizePolicy.Fixed) label.setSizePolicy(policy) container.addWidget(label, 0, 1, 1, 1) label = QLabel(_('Maps \\ Teams:')) label.setAlignment(Qt.AlignCenter) policy = QSizePolicy() policy.setHorizontalStretch(4) policy.setHorizontalPolicy(QSizePolicy.Expanding) policy.setVerticalStretch(1) policy.setVerticalPolicy(QSizePolicy.Fixed) label.setSizePolicy(policy) container.addWidget(label, 1, 1, 1, 1) container.addWidget(self.qb_logo1, 0, 2, 2, 1) container.addWidget(self.le_league, 0, 3, 1, 3) container.addWidget(self.le_team[0], 1, 3, 1, 1) container.addWidget(self.sl_team, 1, 4, 1, 1) container.addWidget(self.le_team[1], 1, 5, 1, 1) container.addWidget(self.qb_logo2, 0, 6, 2, 1) layout.addLayout(container) for player_idx in range(self.max_no_sets): self.le_map[player_idx].textModified.connect( lambda player_idx=player_idx: self.map_changed(player_idx)) for team_idx in range(2): self.cb_race[team_idx][player_idx].\ currentIndexChanged.connect( lambda idx, t=team_idx, p=player_idx: self.race_changed(t, p)) self.le_player[team_idx][player_idx].textModified.connect( lambda t=team_idx, p=player_idx: self.player_changed(t, p)) self.le_player[team_idx][player_idx].setText("TBD") self.le_player[team_idx][player_idx].setAlignment( Qt.AlignCenter) self.le_player[team_idx][player_idx].setPlaceholderText( _("Player {} of team {}").format(player_idx + 1, team_idx + 1)) self.le_player[team_idx][player_idx].setMinimumWidth( self.mimumLineEditWidth) self.le_player[team_idx][player_idx].setContextMenuPolicy( Qt.CustomContextMenu) self.le_player[team_idx][player_idx].\ customContextMenuRequested.connect( lambda x, team_idx=team_idx, player_idx=player_idx: self.openPlayerContextMenu(team_idx, player_idx)) for i in range(4): self.cb_race[team_idx][player_idx].addItem( QIcon(scctool.settings.getResFile( str(i) + ".png")), "") self.cb_race[team_idx][player_idx].setFixedWidth( self.raceWidth) self.sl_score[player_idx].setMinimum(-1) self.sl_score[player_idx].setMaximum(1) self.sl_score[player_idx].setValue(0) self.sl_score[player_idx].setTickPosition( QSlider.TicksBothSides) self.sl_score[player_idx].setTickInterval(1) self.sl_score[player_idx].setTracking(False) self.sl_score[player_idx].valueChanged.connect( lambda x, player_idx=player_idx: self.sl_changed(player_idx, x)) self.sl_score[player_idx].setToolTip(_('Set the score')) self.sl_score[player_idx].setFixedWidth(self.scoreWidth) self.le_map[player_idx].setText("TBD") self.le_map[player_idx].setAlignment( Qt.AlignCenter) self.le_map[player_idx].setPlaceholderText( _("Map {}").format(player_idx + 1)) self.le_map[player_idx].setMinimumWidth( self.mimumLineEditWidth) # self.le_map[player_idx].setReadOnly(True) self.setContainer[player_idx] = QHBoxLayout() # self.label_set[player_idx].setText("#" + str(player_idx + 1)) # self.label_set[player_idx].setAlignment( # Qt.AlignCenter) self.label_set[player_idx].setToolTip( _("Select map on Mapstats Browser Source.")) self.label_set[player_idx].setEnabled(False) self.label_set[player_idx].clicked.connect( lambda x, player_idx=player_idx: self.showMap(player_idx)) self.label_set[player_idx].setFixedWidth(self.labelWidth) self.setContainer[player_idx].addWidget( self.label_set[player_idx], 0) self.setContainer[player_idx].addWidget( self.le_map[player_idx], 4) self.setContainer[player_idx].addWidget( self.cb_race[0][player_idx], 0) self.setContainer[player_idx].addWidget( self.le_player[0][player_idx], 4) self.setContainer[player_idx].addWidget( self.sl_score[player_idx], 0) self.setContainer[player_idx].addWidget( self.le_player[1][player_idx], 4) self.setContainer[player_idx].addWidget( self.cb_race[1][player_idx], 0) layout.addLayout(self.setContainer[player_idx]) self.createVetoGroupBox() layout.addWidget(self.veto_groupbox) layout.addItem(QSpacerItem( 0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding)) self.setLayout(layout) self.updateMapCompleters() self.updatePlayerCompleters() self.updateTeamCompleters()
def __init__(self, aPath, parent=None): super(VideoPlayer, self).__init__(parent) self.setAttribute(Qt.WA_NoSystemBackground, True) self.setAcceptDrops(True) self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.StreamPlayback) self.mediaPlayer.mediaStatusChanged.connect(self.printMediaData) self.mediaPlayer.setVolume(80) self.videoWidget = QVideoWidget(self) self.setAcceptDrops(True) self.setWindowTitle("QT5 Player") self.setWindowIcon(QIcon.fromTheme("multimedia-video-player")) self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint) self.setGeometry(100, 300, 600, 380) self.setContextMenuPolicy(Qt.CustomContextMenu) self.customContextMenuRequested[QPoint].connect( self.contextMenuRequested) self.show() self.widescreen = True self.lbl = QLineEdit('00:00:00') self.lbl.setReadOnly(True) self.lbl.setFixedWidth(70) self.lbl.setUpdatesEnabled(True) self.lbl.setStyleSheet(stylesheet(self)) self.elbl = QLineEdit('00:00:00') self.elbl.setReadOnly(True) self.elbl.setFixedWidth(70) self.elbl.setUpdatesEnabled(True) self.elbl.setStyleSheet(stylesheet(self)) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setFixedWidth(32) self.playButton.setStyleSheet("background-color: black") self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal, self) self.positionSlider.setStyleSheet(stylesheet(self)) self.positionSlider.setRange(0, 100) self.positionSlider.sliderMoved.connect(self.setPosition) self.positionSlider.sliderMoved.connect(self.handleLabel) self.positionSlider.setSingleStep(2) self.positionSlider.setPageStep(20) self.positionSlider.setAttribute(Qt.WA_TranslucentBackground, True) self.clip = QApplication.clipboard() self.myurl = "" controlLayout = QHBoxLayout() controlLayout.setContentsMargins(5, 0, 5, 0) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.lbl) controlLayout.addWidget(self.positionSlider) controlLayout.addWidget(self.elbl) layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.videoWidget) layout.addLayout(controlLayout) self.setLayout(layout) self.myinfo = "©2016\nAxel Schneider\n\nMouse Wheel = Zoom\nUP = Volume Up\nDOWN = Volume Down\n" + \ "LEFT = < 1 Minute\nRIGHT = > 1 Minute\n" + \ "SHIFT+LEFT = < 10 Minutes\nSHIFT+RIGHT = > 10 Minutes" self.widescreen = True self.hideSlider() #### shortcuts #### self.shortcut = QShortcut(QKeySequence("q"), self) self.shortcut.activated.connect(self.handleQuit) self.shortcut = QShortcut(QKeySequence(" "), self) self.shortcut.activated.connect(self.play) self.shortcut = QShortcut(QKeySequence("f"), self) self.shortcut.activated.connect(self.handleFullscreen) self.shortcut = QShortcut(QKeySequence("i"), self) self.shortcut.activated.connect(self.handleInfo) self.shortcut = QShortcut(QKeySequence("s"), self) self.shortcut.activated.connect(self.toggleSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Right), self) self.shortcut.activated.connect(self.forwardSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Left), self) self.shortcut.activated.connect(self.backSlider) self.shortcut = QShortcut(QKeySequence(Qt.Key_Up), self) self.shortcut.activated.connect(self.volumeUp) self.shortcut = QShortcut(QKeySequence(Qt.Key_Down), self) self.shortcut.activated.connect(self.volumeDown) self.shortcut = QShortcut( QKeySequence(Qt.ShiftModifier + Qt.Key_Right), self) self.shortcut.activated.connect(self.forwardSlider10) self.shortcut = QShortcut(QKeySequence(Qt.ShiftModifier + Qt.Key_Left), self) self.shortcut.activated.connect(self.backSlider10) self.mediaPlayer.setVideoOutput(self.videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.positionChanged.connect(self.handleLabel) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError) print("QT5 Player started") self.suspend_screensaver()
def __init__(self, window, plugin, keystore, device_id): title = _("{} Settings").format(plugin.device) super(SettingsDialog, self).__init__(window, title) config = app_state.config hs_rows, hs_cols = (64, 128) def invoke_client(method, *args, **kw_args): unpair_after = kw_args.pop('unpair_after', False) def task(): client = app_state.device_manager.client_by_id(device_id) if not client: raise RuntimeError("Device not connected") if method: getattr(client, method)(*args, **kw_args) if unpair_after: app_state.device_manager.unpair_id(device_id) return client.features window.run_in_thread(task, on_success=update) def update(features): self.features = features set_label_enabled() bl_hash = bh2u(features.bootloader_hash) bl_hash = "\n".join([bl_hash[:32], bl_hash[32:]]) noyes = [_("No"), _("Yes")] endis = [_("Enable Passphrases"), _("Disable Passphrases")] disen = [_("Disabled"), _("Enabled")] setchange = [_("Set a PIN"), _("Change PIN")] version = "%d.%d.%d" % (features.major_version, features.minor_version, features.patch_version) device_label.setText(features.label) pin_set_label.setText(noyes[features.pin_protection]) passphrases_label.setText(disen[features.passphrase_protection]) bl_hash_label.setText(bl_hash) label_edit.setText(features.label) device_id_label.setText(features.device_id) initialized_label.setText(noyes[features.initialized]) version_label.setText(version) clear_pin_button.setVisible(features.pin_protection) clear_pin_warning.setVisible(features.pin_protection) pin_button.setText(setchange[features.pin_protection]) pin_msg.setVisible(not features.pin_protection) passphrase_button.setText(endis[features.passphrase_protection]) language_label.setText(features.language) def set_label_enabled(): label_apply.setEnabled(label_edit.text() != self.features.label) def rename(): invoke_client('change_label', label_edit.text()) def toggle_passphrase(): title = _("Confirm Toggle Passphrase Protection") currently_enabled = self.features.passphrase_protection if currently_enabled: msg = _("After disabling passphrases, you can only pair this " "ElectrumSV wallet if it had an empty passphrase. " "If its passphrase was not empty, you will need to " "create a new wallet with the install wizard. You " "can use this wallet again at any time by re-enabling " "passphrases and entering its passphrase.") else: msg = _("Your current ElectrumSV wallet can only be used with " "an empty passphrase. You must create a separate " "wallet with the install wizard for other passphrases " "as each one generates a new set of addresses.") msg += "\n\n" + _("Are you sure you want to proceed?") if not self.question(msg, title=title): return invoke_client('toggle_passphrase', unpair_after=currently_enabled) def set_pin(): invoke_client('set_pin', remove=False) def clear_pin(): invoke_client('set_pin', remove=True) def wipe_device(): wallet = window.wallet if wallet and sum(wallet.get_balance()): title = _("Confirm Device Wipe") msg = _("Are you SURE you want to wipe the device?\n" "Your wallet still has bitcoins in it!") if not self.question(msg, title=title, icon=QMessageBox.Critical): return invoke_client('wipe_device', unpair_after=True) def slider_moved(): mins = timeout_slider.sliderPosition() timeout_minutes.setText(_("%2d minutes") % mins) def slider_released(): config.set_session_timeout(timeout_slider.sliderPosition() * 60) # Information tab info_tab = QWidget() info_layout = QVBoxLayout(info_tab) info_glayout = QGridLayout() info_glayout.setColumnStretch(2, 1) device_label = QLabel() pin_set_label = QLabel() passphrases_label = QLabel() version_label = QLabel() device_id_label = QLabel() bl_hash_label = QLabel() bl_hash_label.setWordWrap(True) language_label = QLabel() initialized_label = QLabel() rows = [ (_("Device Label"), device_label), (_("PIN set"), pin_set_label), (_("Passphrases"), passphrases_label), (_("Firmware Version"), version_label), (_("Device ID"), device_id_label), (_("Bootloader Hash"), bl_hash_label), (_("Language"), language_label), (_("Initialized"), initialized_label), ] for row_num, (label, widget) in enumerate(rows): info_glayout.addWidget(QLabel(label), row_num, 0) info_glayout.addWidget(widget, row_num, 1) info_layout.addLayout(info_glayout) # Settings tab settings_tab = QWidget() settings_layout = QVBoxLayout(settings_tab) settings_glayout = QGridLayout() # Settings tab - Label label_msg = QLabel(_("Name this {}. If you have multiple devices " "their labels help distinguish them.") .format(plugin.device)) label_msg.setWordWrap(True) label_label = QLabel(_("Device Label")) label_edit = QLineEdit() label_edit.setMinimumWidth(150) label_edit.setMaxLength(plugin.MAX_LABEL_LEN) label_apply = QPushButton(_("Apply")) label_apply.clicked.connect(rename) label_edit.textChanged.connect(set_label_enabled) settings_glayout.addWidget(label_label, 0, 0) settings_glayout.addWidget(label_edit, 0, 1, 1, 2) settings_glayout.addWidget(label_apply, 0, 3) settings_glayout.addWidget(label_msg, 1, 1, 1, -1) # Settings tab - PIN pin_label = QLabel(_("PIN Protection")) pin_button = QPushButton() pin_button.clicked.connect(set_pin) settings_glayout.addWidget(pin_label, 2, 0) settings_glayout.addWidget(pin_button, 2, 1) pin_msg = QLabel(_("PIN protection is strongly recommended. " "A PIN is your only protection against someone " "stealing your bitcoins if they obtain physical " "access to your {}.").format(plugin.device)) pin_msg.setWordWrap(True) pin_msg.setStyleSheet("color: red") settings_glayout.addWidget(pin_msg, 3, 1, 1, -1) # Settings tab - Session Timeout timeout_label = QLabel(_("Session Timeout")) timeout_minutes = QLabel() timeout_slider = QSlider(Qt.Horizontal) timeout_slider.setRange(1, 60) timeout_slider.setSingleStep(1) timeout_slider.setTickInterval(5) timeout_slider.setTickPosition(QSlider.TicksBelow) timeout_slider.setTracking(True) timeout_msg = QLabel( _("Clear the session after the specified period " "of inactivity. Once a session has timed out, " "your PIN and passphrase (if enabled) must be " "re-entered to use the device.")) timeout_msg.setWordWrap(True) timeout_slider.setSliderPosition(config.get_session_timeout() // 60) slider_moved() timeout_slider.valueChanged.connect(slider_moved) timeout_slider.sliderReleased.connect(slider_released) settings_glayout.addWidget(timeout_label, 6, 0) settings_glayout.addWidget(timeout_slider, 6, 1, 1, 3) settings_glayout.addWidget(timeout_minutes, 6, 4) settings_glayout.addWidget(timeout_msg, 7, 1, 1, -1) settings_layout.addLayout(settings_glayout) settings_layout.addStretch(1) # Advanced tab advanced_tab = QWidget() advanced_layout = QVBoxLayout(advanced_tab) advanced_glayout = QGridLayout() # Advanced tab - clear PIN clear_pin_button = QPushButton(_("Disable PIN")) clear_pin_button.clicked.connect(clear_pin) clear_pin_warning = QLabel( _("If you disable your PIN, anyone with physical access to your " "{} device can spend your bitcoins.").format(plugin.device)) clear_pin_warning.setWordWrap(True) clear_pin_warning.setStyleSheet("color: red") advanced_glayout.addWidget(clear_pin_button, 0, 2) advanced_glayout.addWidget(clear_pin_warning, 1, 0, 1, 5) # Advanced tab - toggle passphrase protection passphrase_button = QPushButton() passphrase_button.clicked.connect(toggle_passphrase) passphrase_msg = WWLabel(PASSPHRASE_HELP) passphrase_warning = WWLabel(PASSPHRASE_NOT_PIN) passphrase_warning.setStyleSheet("color: red") advanced_glayout.addWidget(passphrase_button, 3, 2) advanced_glayout.addWidget(passphrase_msg, 4, 0, 1, 5) advanced_glayout.addWidget(passphrase_warning, 5, 0, 1, 5) # Advanced tab - wipe device wipe_device_button = QPushButton(_("Wipe Device")) wipe_device_button.clicked.connect(wipe_device) wipe_device_msg = QLabel( _("Wipe the device, removing all data from it. The firmware " "is left unchanged.")) wipe_device_msg.setWordWrap(True) wipe_device_warning = QLabel( _("Only wipe a device if you have the recovery seed written down " "and the device wallet(s) are empty, otherwise the bitcoins " "will be lost forever.")) wipe_device_warning.setWordWrap(True) wipe_device_warning.setStyleSheet("color: red") advanced_glayout.addWidget(wipe_device_button, 6, 2) advanced_glayout.addWidget(wipe_device_msg, 7, 0, 1, 5) advanced_glayout.addWidget(wipe_device_warning, 8, 0, 1, 5) advanced_layout.addLayout(advanced_glayout) advanced_layout.addStretch(1) tabs = QTabWidget(self) tabs.addTab(info_tab, _("Information")) tabs.addTab(settings_tab, _("Settings")) tabs.addTab(advanced_tab, _("Advanced")) dialog_vbox = QVBoxLayout(self) dialog_vbox.addWidget(tabs) dialog_vbox.addLayout(Buttons(CloseButton(self))) # Update information invoke_client(None)
def __init__(self): super().__init__() # iniciando conexio con google self.translate_client = translate.Client() self.my_state = _STATE_PLAY # Controles principales para organizar la ventana. self.widget = QWidget(self) self.layout = QVBoxLayout() self.bottom_layout = QHBoxLayout() # status layout self.statusLayout = StatusLayout() # Sutitles layout self.subLayout = SubtitleLayout() # time stuff self.time_layout = QHBoxLayout() self.label_time = QLabel() self.label_mi = QLabel() self.label_end = QLabel() # inicializar subtitulos self.list_frames = sub.frames(MY_PATH + SUB_PATH) self.text_frame = self.list_frames.pop() # Control de reproducción de video de Qt. self.video_widget = QVideoWidget(self) self.media_player = QMediaPlayer(None, QMediaPlayer.VideoSurface) self.media_player.setMedia( QMediaContent(QUrl.fromLocalFile(MY_PATH + VIDEO_PATH))) self.media_player.setVideoOutput(self.video_widget) # Botones de reproducción y pausa. # Deslizadores para el volumen y transición del video. self.seek_slider = QSlider(Qt.Horizontal) self.volume_slider = QSlider(Qt.Horizontal) self.volume_slider.setRange(0, 100) self.volume_slider.setValue(self.media_player.volume()) self.volume_slider.sliderMoved.connect(self.media_player.setVolume) # actualizar la posicion self.seek_slider.sliderMoved.connect(self.change_media_player) self.media_player.positionChanged.connect(self.change_seek_bar) self.media_player.durationChanged.connect(self.change_duration) # Acomodar controles en la pantalla. self.layout.addLayout(self.statusLayout) self.layout.addWidget(self.video_widget) self.layout.addLayout(self.bottom_layout) self.layout.addLayout(self.time_layout) self.layout.addWidget(self.seek_slider) # andir layout self.layout.addLayout(self.subLayout) #conections self.subLayout.prev_button.clicked.connect(self.click_prev) self.subLayout.next_button.clicked.connect(self.click_next) self.bottom_layout.addWidget(self.volume_slider) # time stuff self.time_layout.addWidget(self.label_time) self.time_layout.addWidget(self.label_mi) self.time_layout.addWidget(self.label_end) #self.set_sub_text(self.labels_sub2, self.frame.txt) self.subLayout.set_sub_text( self.subLayout.labelSub1, self.text_frame.f1.get_txt_conver_asteric()) self.subLayout.set_sub_text( self.subLayout.labelSub2, self.text_frame.f2.get_txt_conver_asteric()) # Conectar los eventos con sus correspondientes funciones. self.statusLayout.play_button.clicked.connect(self.play_clicked) self.statusLayout.stop_button.clicked.connect(self.stop_clicked) self.media_player.stateChanged.connect(self.state_changed) # conectando labels self.connect_labels() # Personalizar la ventana. self.setWindowTitle("Reproductor de video") self.resize(800, 600) self.layout.setContentsMargins(0, 0, 0, 0) self.bottom_layout.setContentsMargins(0, 0, 0, 0) self.widget.setLayout(self.layout) self.setCentralWidget(self.widget) # setear Timer self.timer = QTimer() self.timer.timeout.connect(self.timer_change_status) self.timer.start(_TIMER_TICK) # Reproducir el video. self.media_player.setNotifyInterval(_NOTIFY_INTERVAL) self.media_player.play()
def add_pro_tab_buttons(self): btn1 = QPushButton('Unsharp Mask') btn1.setIcon(QIcon('Icons/mask.png')) btn1.clicked.connect(self.parent.handler.handle_unsharp_mask) self.tab4.layout.addWidget(btn1) self.tab4.layout.addWidget(QLabel("Radius:")) self.mask_r_level = QSlider(Qt.Horizontal) self.mask_r_level.setTickPosition(QSlider.TicksBelow) self.mask_r_level.setTickInterval(1) self.mask_r_level.setMinimum(1) self.mask_r_level.setMaximum(8) self.mask_r_level.setValue(4) self.tab4.layout.addWidget(self.mask_r_level) self.mask_r_level.valueChanged.connect(self.change_mask_r) self.tab4.layout.addWidget(QLabel("Percent:")) self.mask_p_level = QSlider(Qt.Horizontal) self.mask_p_level.setTickPosition(QSlider.TicksBelow) self.mask_p_level.setTickInterval(50) self.mask_p_level.setMinimum(1) self.mask_p_level.setMaximum(300) self.mask_p_level.setValue(150) self.tab4.layout.addWidget(self.mask_p_level) self.mask_p_level.valueChanged.connect(self.change_mask_p) self.tab4.layout.addWidget(QLabel("Threshold:")) self.mask_t_level = QSlider(Qt.Horizontal) self.mask_t_level.setTickPosition(QSlider.TicksBelow) self.mask_t_level.setTickInterval(1) self.mask_t_level.setMinimum(1) self.mask_t_level.setMaximum(6) self.mask_t_level.setValue(3) self.tab4.layout.addWidget(self.mask_t_level) self.mask_t_level.valueChanged.connect(self.change_mask_t) btn2 = QPushButton('Min Filter') btn2.setIcon(QIcon('Icons/filter-512.png')) btn2.clicked.connect(self.parent.handler.handle_min_filter) self.tab4.layout.addWidget(btn2) btn3 = QPushButton('Max Filter') btn3.setIcon(QIcon('Icons/filter-512.png')) btn3.clicked.connect(self.parent.handler.handle_max_filter) self.tab4.layout.addWidget(btn3) btn4 = QPushButton('Median Filter') btn4.setIcon(QIcon('Icons/filter-512.png')) btn4.clicked.connect(self.parent.handler.handle_median_filter) self.tab4.layout.addWidget(btn4) btn5 = QPushButton('Rank Filter') btn5.setIcon(QIcon('Icons/filter-512.png')) btn5.clicked.connect(self.parent.handler.handle_min_filter) self.tab4.layout.addWidget(btn5) self.tab4.layout.addWidget(QLabel("Rank:")) self.rank_level = QSlider(Qt.Horizontal) self.rank_level.setTickPosition(QSlider.TicksBelow) self.rank_level.setTickInterval(1) self.rank_level.setMinimum(1) self.rank_level.setMaximum(5) self.rank_level.setValue(2) self.tab4.layout.addWidget(self.rank_level) self.rank_level.valueChanged.connect(self.change_rank) self.tab4.layout.addWidget(QLabel("Size:")) self.size_level = QSlider(Qt.Horizontal) self.size_level.setTickPosition(QSlider.TicksBelow) self.size_level.setTickInterval(4) self.size_level.setMinimum(1) self.size_level.setMaximum(18) self.size_level.setValue(9) self.tab4.layout.addWidget(self.size_level) self.size_level.valueChanged.connect(self.change_size) btn16 = QPushButton('Timer') btn16.setIcon(QIcon('Icons/timer.png')) btn16.clicked.connect(self.parent.handler.handle_timer) self.tab4.layout.addWidget(btn16) btn10 = QPushButton('Object Labeling') btn10.setIcon(QIcon('Icons/CCL.png')) btn10.clicked.connect(self.parent.handler.handle_ccl) self.tab4.layout.addWidget(btn10)
def add_ker_tab_buttons(self): self.tab5.layout.addWidget(QLabel("Kernel (3 * 3):")) btn16 = QPushButton('Kernel') btn16.setIcon(QIcon('Icons/kernel.png')) btn16.clicked.connect(self.parent.handler.handle_kernel) self.tab5.layout.addWidget(btn16) self.scale_lable = QLabel("Scale: 1.0") self.tab5.layout.addWidget(self.scale_lable) self.kernel_scale_level = QSlider(Qt.Horizontal) self.kernel_scale_level.setTickPosition(QSlider.TicksBelow) self.kernel_scale_level.setTickInterval(5) self.kernel_scale_level.setMinimum(0) self.kernel_scale_level.setMaximum(20) self.kernel_scale_level.setValue(10) self.tab5.layout.addWidget(self.kernel_scale_level) self.kernel_scale_level.valueChanged.connect(self.change_kerkel_scale) self.offset_label = QLabel("Offset: 0.0") self.tab5.layout.addWidget(self.offset_label) self.kernel_offset_level = QSlider(Qt.Horizontal) self.kernel_offset_level.setTickPosition(QSlider.TicksBelow) self.kernel_offset_level.setTickInterval(5) self.kernel_offset_level.setMinimum(0) self.kernel_offset_level.setMaximum(20) self.kernel_offset_level.setValue(10) self.tab5.layout.addWidget(self.kernel_offset_level) self.kernel_offset_level.valueChanged.connect( self.change_kerkel_offset) self.grid = QGridLayout() self.grid.setSpacing(8) self.grid.setAlignment(Qt.AlignTop) frame = QFrame() frame.setLayout(self.grid) self.tab5.layout.addWidget(frame) self.idx11 = QDoubleSpinBox() self.grid.addWidget(self.idx11, 1, 1, Qt.AlignLeading) self.idx12 = QDoubleSpinBox() self.grid.addWidget(self.idx12, 1, 2, Qt.AlignLeading) self.idx13 = QDoubleSpinBox() self.grid.addWidget(self.idx13, 1, 3, Qt.AlignLeading) self.idx21 = QDoubleSpinBox() self.grid.addWidget(self.idx21, 2, 1, Qt.AlignLeading) self.idx22 = QDoubleSpinBox() self.grid.addWidget(self.idx22, 2, 2, Qt.AlignLeading) self.idx23 = QDoubleSpinBox() self.grid.addWidget(self.idx23, 2, 3, Qt.AlignLeading) self.idx31 = QDoubleSpinBox() self.grid.addWidget(self.idx31, 3, 1, Qt.AlignLeading) self.idx32 = QDoubleSpinBox() self.grid.addWidget(self.idx32, 3, 2, Qt.AlignLeading) self.idx33 = QDoubleSpinBox() self.grid.addWidget(self.idx33, 3, 3, Qt.AlignLeading) self.idx_fields = [ self.idx11, self.idx12, self.idx13, self.idx21, self.idx22, self.idx23, self.idx31, self.idx32, self.idx33 ] for idx in self.idx_fields: idx.setFixedWidth(50) idx.setFixedHeight(25) idx.setValue(0) idx.setMinimum(0 - 8.0) idx.setMaximum(8.0) self.tab5.layout.addWidget(QLabel(" ")) btn13 = QPushButton('Custom Filter') btn13.setIcon(QIcon('Icons/filter.png')) btn13.clicked.connect(self.parent.handler.handle_custom_filter) self.tab5.layout.addWidget(btn13) self.rgb_grid = QGridLayout() self.rgb_grid.setSpacing(3) self.rgb_grid.setAlignment(Qt.AlignTop) rgb_frame = QFrame() rgb_frame.setLayout(self.rgb_grid) self.tab5.layout.addWidget(rgb_frame) self.rgb_input = [] self.rgb_grid.addWidget(QLabel("Red transformation:"), 0, 0, 1, 3) r1 = QDoubleSpinBox() r1.setMinimum(-255) r1.setMaximum(255) r1.setValue(1.0) self.rgb_input.append(r1) self.rgb_grid.addWidget(r1, 1, 0) self.rgb_grid.addWidget(QLabel(" * R + "), 1, 1) r2 = QDoubleSpinBox() r2.setMinimum(-255) r2.setMaximum(255) self.rgb_input.append(r2) self.rgb_grid.addWidget(r2, 1, 2) self.rgb_grid.addWidget(QLabel("Green transformation:"), 2, 0, 1, 3) g1 = QDoubleSpinBox() g1.setMinimum(-255) g1.setMaximum(255) g1.setValue(1.0) self.rgb_input.append(g1) self.rgb_grid.addWidget(g1, 3, 0) self.rgb_grid.addWidget(QLabel(" * G + "), 3, 1) g2 = QDoubleSpinBox() g2.setMinimum(-255) g2.setMaximum(255) self.rgb_input.append(g2) self.rgb_grid.addWidget(g2, 3, 2) self.rgb_grid.addWidget(QLabel("Blue transformation:"), 4, 0, 1, 3) b1 = QDoubleSpinBox() b1.setMinimum(-255) b1.setMaximum(255) b1.setValue(1.0) self.rgb_input.append(b1) self.rgb_grid.addWidget(b1, 5, 0) self.rgb_grid.addWidget(QLabel(" * B + "), 5, 1) b2 = QDoubleSpinBox() self.rgb_input.append(b2) b2.setMinimum(-255) b2.setMaximum(255) self.rgb_grid.addWidget(b2, 5, 2)
def add_more_tab_buttons(self): btn7 = QPushButton('Smooth') btn7.setIcon(QIcon('Icons/smooth.png')) btn7.clicked.connect(self.parent.handler.handle_blur) self.tab3.layout.addWidget(btn7) btn20 = QPushButton('Smooth More') btn20.setIcon(QIcon('Icons/smooth.png')) btn20.clicked.connect(self.parent.handler.handle_smooth_more) self.tab3.layout.addWidget(btn20) btn6 = QPushButton('Detail') btn6.setIcon(QIcon('Icons/detail.png')) btn6.clicked.connect(self.parent.handler.handle_detail) self.tab3.layout.addWidget(btn6) btn5 = QPushButton('Emboss') btn5.setIcon(QIcon('Icons/emboss.png')) btn5.clicked.connect(self.parent.handler.handle_emboss) self.tab3.layout.addWidget(btn5) self.tab3.layout.addWidget(QLabel(" ")) btn21 = QPushButton('Edge') btn21.setIcon(QIcon('Icons/edge.png')) btn21.clicked.connect(self.parent.handler.handle_edge) self.tab3.layout.addWidget(btn21) btn22 = QPushButton('Edge More') btn22.setIcon(QIcon('Icons/edge.png')) btn22.clicked.connect(self.parent.handler.handle_edge_more) self.tab3.layout.addWidget(btn22) btn23 = QPushButton('Find Edges') btn23.setIcon(QIcon('Icons/find_edges.png')) btn23.clicked.connect(self.parent.handler.handle_find_edges) self.tab3.layout.addWidget(btn23) self.tab3.layout.addWidget(QLabel(" ")) btn8 = QPushButton('Blur') btn8.setIcon(QIcon('Icons/blur.png')) btn8.clicked.connect(self.parent.handler.handle_blur) self.tab3.layout.addWidget(btn8) btn24 = QPushButton('Gaussian Blur') btn24.setIcon(QIcon('Icons/gaussian.png')) btn24.clicked.connect(self.parent.handler.handle_gaussian_blur) self.tab3.layout.addWidget(btn24) btn25 = QPushButton('Box Blur') btn25.setIcon(QIcon('Icons/box.png')) btn25.clicked.connect(self.parent.handler.handle_box_blur) self.tab3.layout.addWidget(btn25) self.tab3.layout.addWidget(QLabel("Radius:")) self.gaussian_level = QSlider(Qt.Horizontal) self.gaussian_level.setTickPosition(QSlider.TicksBelow) self.gaussian_level.setTickInterval(1) self.gaussian_level.setMinimum(1) self.gaussian_level.setMaximum(8) self.gaussian_level.setValue(4) self.tab3.layout.addWidget(self.gaussian_level) self.gaussian_level.valueChanged.connect(self.change_gaussian) btn9 = QPushButton('Sharpen') btn9.setIcon(QIcon('Icons/sharpen.png')) btn9.clicked.connect(self.parent.handler.handle_sharpen) self.tab3.layout.addWidget(btn9) btn12 = QPushButton('Outline Detection') btn12.setIcon(QIcon('Icons/outline.png')) btn12.clicked.connect(self.parent.handler.handle_outline) self.tab3.layout.addWidget(btn12) btn17 = QPushButton('Dithering') btn17.setIcon(QIcon('Icons/floyd.png')) btn17.clicked.connect(self.parent.handler.handle_dithering) self.tab3.layout.addWidget(btn17)
import sys from medcv.gui import QMedLabel from medcv.data import chest_dcm from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QSlider application = QApplication(sys.argv) main_widget = QWidget() layout = QVBoxLayout(main_widget) med_label = QMedLabel() med_label.setMaximumSize(600, 600) med_label.setScaledContents(True) med_label.setMedicalImage(chest_dcm()) width_slider = QSlider(Qt.Horizontal) level_slider = QSlider(Qt.Horizontal) width_slider.setRange(1, 50000) width_slider.valueChanged.connect(med_label.setImageWindowWidth) level_slider.setRange(0, 50000) level_slider.valueChanged.connect(med_label.setImageWindowLevel) layout.addWidget(med_label) layout.addWidget(width_slider) layout.addWidget(level_slider) main_widget.show() sys.exit(application.exec_())
def __init__(self, parent=None): super(VideoWindow, self).__init__(parent) self.setWindowTitle( "PyQt Video Player Widget Example - pythonprogramminglanguage.com") self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) videoWidget = QVideoWidget() self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) self.errorLabel = QLabel() self.errorLabel.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) # Create new action openAction = QAction(QIcon("open.png"), "&Open", self) openAction.setShortcut("Ctrl+O") openAction.setStatusTip("Open movie") openAction.triggered.connect(self.openFile) # Create exit action exitAction = QAction(QIcon("exit.png"), "&Exit", self) exitAction.setShortcut("Ctrl+Q") exitAction.setStatusTip("Exit application") exitAction.triggered.connect(self.exitCall) # Create menu bar and add action menuBar = self.menuBar() fileMenu = menuBar.addMenu("&File") # fileMenu.addAction(newAction) fileMenu.addAction(openAction) fileMenu.addAction(exitAction) # Create a widget for window contents wid = QWidget(self) self.setCentralWidget(wid) # Create layouts to place inside widget controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.positionSlider) layout = QVBoxLayout() layout.addWidget(videoWidget) layout.addLayout(controlLayout) layout.addWidget(self.errorLabel) # Set widget to contain window contents wid.setLayout(layout) self.mediaPlayer.setVideoOutput(videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError)
def __init__(self, coordinates, size, parent=None): super(QSlider(Qt.Horizontal), self).__init__(parent) self.parent = parent self.setFocusPolicy(Qt.NoFocus) self.setGeometry(coordinates[0], coordinates[1], size[0], size[1]) self.valueChanged[int].connect(self.changeValue)
def initUI(self): self.setGeometry(300, 100, 1000, 750) self.lumen = () self.plaque = () layout = QHBoxLayout() vbox1 = QVBoxLayout() vbox2 = QVBoxLayout() vbox1.setContentsMargins(0, 0, 100, 100) vbox2.setContentsMargins(100, 0, 0, 100) vbox2hbox1 = QHBoxLayout() vbox2.addLayout(vbox2hbox1) layout.addLayout(vbox1) layout.addLayout(vbox2) dicomButton = QPushButton('Read DICOM') contoursButton = QPushButton('Read Contours') gatingButton = QPushButton('Extract Diastolic Frames') segmentButton = QPushButton('Segment') writeButton = QPushButton('Write Report') self.infoTable = QTableWidget() self.infoTable.setRowCount(8) self.infoTable.setColumnCount(2) self.infoTable.setItem(0, 0, QTableWidgetItem('Patient Name')) self.infoTable.setItem(1, 0, QTableWidgetItem('Patient DOB')) self.infoTable.setItem(2, 0, QTableWidgetItem('Patient Sex')) self.infoTable.setItem(3, 0, QTableWidgetItem('Pullback Speed')) self.infoTable.setItem(4, 0, QTableWidgetItem('Resolution')) self.infoTable.setItem(5, 0, QTableWidgetItem('Dimensions')) self.infoTable.setItem(6, 0, QTableWidgetItem('Manufacturer')) self.infoTable.setItem(7, 0, QTableWidgetItem('Model')) dicomButton.clicked.connect(self.readDICOM) contoursButton.clicked.connect(self.readContours) segmentButton.clicked.connect(self.segment) gatingButton.clicked.connect(self.gate) """ self.lumen, self.plaque, self.stent, self.resolution, frames = read_xml.read('/home/ubuntu/Documents/Qt/1-63/1-63.xml') self.lumen = self.mapToList(self.lumen) self.plaque = self.mapToList(self.plaque) self.stent = self.mapToList(self.stent) dicom = dcm.read_file('/home/ubuntu/Documents/Qt/1-63/2.16.840.1.114380.1.1.347327.186.1.1.20100506085134890.3.dcm') self.images = dicom.pixel_array """ self.slider = QSlider(Qt.Horizontal) #self.slider.setRange(0, self.images.shape[0]) self.slider.setRange(0, 100) self.slider.setValue(0) self.slider.setFocusPolicy(Qt.StrongFocus) sizePolicy = QSizePolicy() sizePolicy.setHorizontalPolicy(QSizePolicy.Fixed) sizePolicy.setVerticalPolicy(QSizePolicy.Fixed) self.slider.setSizePolicy(sizePolicy) self.slider.setMinimumSize(QSize(500, 25)) self.slider.setMaximumSize(QSize(500, 25)) self.slider.valueChanged[int].connect(self.changeValue) #self.slider.keyPressEvent = self.keyPressEvent() self.hideBox = QCheckBox('Hide Contours') self.hideBox.setChecked(True) self.hideBox.stateChanged[int].connect(self.changeState) self.useGatedBox = QCheckBox('Display Gated Frames') self.useGatedBox.stateChanged[int].connect(self.useGated) self.wid = Display() #self.wid.setData(self.lumen, self.plaque, self.images) self.c = Communicate() self.c.updateBW[int].connect(self.wid.setFrame) self.c.updateBool[bool].connect(self.wid.setDisplay) self.text = QLabel() self.text.setAlignment(Qt.AlignCenter) self.text.setText("Frame {}".format(self.slider.value())) vbox1.addWidget(self.wid) vbox1.addWidget(self.slider) vbox1.addWidget(self.text) vbox2.addWidget(self.hideBox) vbox2.addWidget(self.useGatedBox) vbox2.addWidget(dicomButton) vbox2.addWidget(contoursButton) vbox2.addWidget(gatingButton) vbox2.addWidget(segmentButton) vbox2.addWidget(writeButton) vbox2hbox1.addWidget(self.infoTable) centralWidget = QWidget() centralWidget.setLayout(layout) self.setCentralWidget(centralWidget) self.show()
def __init__(self, *args, **kwargs): super(Window, self).__init__(*args, **kwargs) self.setAttribute(Qt.WA_StyledBackground, True) layout = QVBoxLayout(self) layout.addWidget(QSlider(Qt.Vertical, self)) layout.addWidget(QSlider(Qt.Horizontal, self))
def __init__(self, parent=None): """头部区域,包括图标/搜索/设置/登陆/最大/小化/关闭。""" super().__init__() self.setObjectName('Header') self.parent = parent self.player = QMediaPlayer() self.playlist = QMediaPlaylist() self.player.setPlaylist(self.playlist) self.playlist.setPlaybackMode(QMediaPlaylist.Loop) self.mainLayout = QHBoxLayout(self) #self.mainLayout.setSpacing(0) self.preButton = QPushButton() #self.preButton.setIcon(QIcon("../icons/music_pre.png")) self.preButton.setStyleSheet( "QPushButton{border-image: url(icons/music_pre.png)}") #self.preButton.setMaximumSize(48,48) self.preButton.setMinimumSize(36, 36) self.preButton.setObjectName("preButton") self.mainLayout.addWidget(self.preButton) self.playButton = QPushButton() self.playButton.setStyleSheet( "QPushButton{border-image: url(icons/music_on.png)}") #self.playButton.setMaximumSize(48, 48) self.playButton.setMinimumSize(36, 36) self.playButton.setObjectName("playButton") self.mainLayout.addWidget(self.playButton) self.nextButton = QPushButton() self.nextButton.setStyleSheet( "QPushButton{border-image: url(icons/music_next.png)}") #self.nextButton.setMaximumSize(48, 48) self.nextButton.setMinimumSize(36, 36) self.nextButton.setObjectName("nextButton") self.mainLayout.addWidget(self.nextButton) self.currentTimeLabel = QLabel("00:00") self.currentTimeLabel.setMinimumSize(QSize(60, 0)) self.currentTimeLabel.setAlignment(Qt.AlignRight | Qt.AlignTrailing | Qt.AlignVCenter) self.currentTimeLabel.setObjectName("currentTimeLabel") self.mainLayout.addWidget(self.currentTimeLabel) self.timeSlider = QSlider() self.timeSlider.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.timeSlider.setOrientation(Qt.Horizontal) self.timeSlider.setObjectName("timeSlider") self.mainLayout.addWidget(self.timeSlider) self.totalTimeLabel = QLabel("00:00") self.totalTimeLabel.setMinimumSize(QSize(60, 0)) self.totalTimeLabel.setAlignment(Qt.AlignLeading | Qt.AlignLeft | Qt.AlignVCenter) self.totalTimeLabel.setObjectName("totalTimeLabel") self.mainLayout.addWidget(self.totalTimeLabel) self.volumeButton = QPushButton() self.volumeButton.setObjectName("volumeButton") self.mainLayout.addWidget(self.volumeButton) self.volumeSlider = QSlider() self.volumeSlider.setMinimumWidth(100) self.volumeSlider.setMaximumWidth(150) self.volumeSlider.setMaximum(100) self.volumeSlider.setProperty("value", 5) self.volumeSlider.setOrientation(Qt.Horizontal) self.volumeSlider.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding) self.volumeSlider.setObjectName("volumeSlider") self.player.setVolume(self.volumeSlider.value()) self.mainLayout.addWidget(self.volumeSlider) self.musicCycleButton = QPushButton() self.musicCycleButton.setObjectName("musicCycle") self.musicCycleButton.setToolTip("音乐循环") self.mainLayout.addWidget(self.musicCycleButton) self.musicCycleButton = QPushButton("词") self.musicCycleButton.setObjectName("musicCycle") self.musicCycleButton.setToolTip("歌词") self.mainLayout.addWidget(self.musicCycleButton) self.playlistButton = QPushButton("列") self.playlistButton.setObjectName("playlistButton") self.mainLayout.addWidget(self.playlistButton) #self.mainLayout.addStretch(1) self.registerSignalConnect()
def __init__(self, parent): super(SpectrogramTools, self).__init__(parent) self.spectrogram = self.parent().plugin.signal_widget.spectrogram layout = QFormLayout() self.n_fft_le = QLineEdit(str(self.spectrogram.n_fft)) self.n_fft_le_validator = QIntValidator(8, 1024) self.n_fft_le.setValidator(self.n_fft_le_validator) layout.addRow('NFFT', self.n_fft_le) self.n_fft_le.editingFinished.connect(self.set_n_fft) self.step_le = QLineEdit(str(self.spectrogram.step)) self.step_le_validator = QIntValidator(1, 128) self.step_le.setValidator(self.step_le_validator) layout.addRow('Step', self.step_le) self.step_le.editingFinished.connect(self.set_step) self.cmap_cb = QComboBox() layout.addRow('Colormap', self.cmap_cb) # curr_cmap = [x[0] for x in color.get_colormaps().items() \ # if x[1] == self.spectrogram.cmap][0] cmap_list = list(color.get_colormaps().keys()) cmap_list.sort() # curr_idx = cmap_list.index(curr_cmap) self.cmap_cb.addItems(cmap_list) # self.cmap_cb.setCurrentIndex(curr_idx) self.cmap_cb.currentIndexChanged.connect(self.set_cmap) self.interp_cb = QComboBox() layout.addRow('Interpolation', self.interp_cb) interp_list = ['nearest', 'bilinear', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric', 'bicubic', 'catrom', 'mitchell', 'spline16', 'spline36', 'gaussian', 'bessel', 'sinc', 'lanczos', 'blackman'] self.interp_cb.addItems(interp_list) self.interp_cb.currentIndexChanged.connect(self.set_interpolation) self.normalize_chb = QCheckBox() layout.addRow('Normalize', self.normalize_chb) self.normalize_chb.setCheckState(self.spectrogram.normalize) self.normalize_chb.stateChanged.connect(self.set_normalize) clim_low_layout = QHBoxLayout() self.clim_low_s = QSlider(Qt.Horizontal) self.clim_low_s.setMinimum(0) self.clim_low_s.setMaximum(100) self.clim_low_s.setValue(0) self.clim_low_s.setTickInterval(1) self.clim_low_s.valueChanged.connect(self.set_clim_low_s) self.clim_low_le = QLineEdit('0') self.clim_low_le_validator = QIntValidator(1, 100) self.clim_low_le.setValidator(self.clim_low_le_validator) self.clim_low_le.editingFinished.connect(self.set_clim) self.clim_low_le.setMaximumWidth(40) clim_low_layout.addWidget(self.clim_low_s) clim_low_layout.addWidget(self.clim_low_le) layout.addRow('Color limit low', clim_low_layout) clim_high_layout = QHBoxLayout() self.clim_high_s = QSlider(Qt.Horizontal) self.clim_high_s.setMinimum(0) self.clim_high_s.setMaximum(100) self.clim_high_s.setValue(100) self.clim_high_s.setTickInterval(1) self.clim_high_s.valueChanged.connect(self.set_clim_high_s) self.clim_high_le = QLineEdit('100') self.clim_high_le_validator = QIntValidator(1, 100) self.clim_high_le.setValidator(self.clim_high_le_validator) self.clim_high_le.editingFinished.connect(self.set_clim) self.clim_high_le.setMaximumWidth(40) clim_high_layout.addWidget(self.clim_high_s) clim_high_layout.addWidget(self.clim_high_le) layout.addRow('Color limit high', clim_high_layout) self.setLayout(layout)
def __init__(self): super(MainWindow, self).__init__() self.setGeometry(0, 0, 700, 400) self.setContentsMargins(6, 6, 6, 6) self.setStyleSheet(myStyleSheet(self)) self.setWindowTitle("Radio Stations - searching with pyradios") self.genreList = genres.splitlines() self.findfield = QLineEdit() self.findfield.setFixedWidth(250) self.findfield.addAction(QIcon.fromTheme("edit-find"), 0) self.findfield.setPlaceholderText("type search term and press RETURN ") self.findfield.returnPressed.connect(self.findStations) self.findfield.setClearButtonEnabled(True) self.field = QPlainTextEdit() self.field.setContextMenuPolicy(Qt.CustomContextMenu) self.field.customContextMenuRequested.connect( self.contextMenuRequested) self.field.cursorPositionChanged.connect(self.selectLine) self.field.setWordWrapMode(QTextOption.NoWrap) ### volume slider self.volSlider = QSlider() self.volSlider.setFixedWidth(100) self.volSlider.setOrientation(Qt.Horizontal) self.volSlider.valueChanged.connect(self.setVolume) self.volSlider.setMinimum(0) self.volSlider.setMaximum(100) ### genre box self.combo = QComboBox() self.combo.currentIndexChanged.connect(self.comboSearch) self.combo.addItem("choose Genre") for m in self.genreList: self.combo.addItem(m) self.combo.addItem("Country") self.combo.setFixedWidth(150) ### toolbar ### self.tb = self.addToolBar("tools") self.tb.setContextMenuPolicy(Qt.PreventContextMenu) self.tb.setMovable(False) self.saveButton = QPushButton("Save as txt") self.saveButton.setIcon(QIcon.fromTheme("document-save")) self.saveButton.clicked.connect(self.saveStations) self.savePlaylistButton = QPushButton("Save as m3u") self.savePlaylistButton.setIcon(QIcon.fromTheme("document-save")) self.savePlaylistButton.clicked.connect(self.savePlaylist) self.setCentralWidget(self.field) self.tb.addWidget(self.findfield) self.tb.addWidget(self.saveButton) self.tb.addWidget(self.savePlaylistButton) self.tb.addSeparator() self.tb.addWidget(self.combo) ### player ### self.player = QMediaPlayer() self.player.metaDataChanged.connect(self.metaDataChanged) self.startButton = QPushButton("Play") self.startButton.setIcon(QIcon.fromTheme("media-playback-start")) self.startButton.clicked.connect(self.getURLtoPlay) self.stopButton = QPushButton("Stop") self.stopButton.setIcon(QIcon.fromTheme("media-playback-stop")) self.stopButton.clicked.connect(self.stopPlayer) self.statusBar().addPermanentWidget(self.volSlider) self.statusBar().addPermanentWidget(self.startButton) self.statusBar().addPermanentWidget(self.stopButton) ## actions self.getNameAction = QAction(QIcon.fromTheme("edit-copy"), "copy Station Name", self, triggered=self.getName) self.getUrlAction = QAction(QIcon.fromTheme("edit-copy"), "copy Station URL", self, triggered=self.getURL) self.getNameAndUrlAction = QAction(QIcon.fromTheme("edit-copy"), "copy Station Name,URL", self, triggered=self.getNameAndUrl) self.getURLtoPlayAction = QAction( QIcon.fromTheme("media-playback-start"), "play Station", self, shortcut="F6", triggered=self.getURLtoPlay) self.addAction(self.getURLtoPlayAction) self.stopPlayerAction = QAction(QIcon.fromTheme("media-playback-stop"), "stop playing", self, shortcut="F7", triggered=self.stopPlayer) self.addAction(self.stopPlayerAction) self.helpAction = QAction(QIcon.fromTheme("help-info"), "Help", self, shortcut="F1", triggered=self.showHelp) self.addAction(self.helpAction) self.getForWebAction = QAction(QIcon.fromTheme("browser"), "copy for WebPlayer", self, triggered=self.getForWeb) self.volSlider.setValue(60) self.statusBar().showMessage("Welcome", 0)
def __init__(self): # constructor of the base class QMainWindow.__init__(self) QCoreApplication.setOrganizationName("RST") QCoreApplication.setOrganizationDomain("https://tu-dresden.de/rst") QCoreApplication.setApplicationVersion( pkg_resources.require("PyMoskito")[0].version) QCoreApplication.setApplicationName(globals()["__package__"]) # load settings self._settings = QSettings() self._read_settings() # initialize logger self._logger = logging.getLogger(self.__class__.__name__) # Create Simulation Backend self.guiProgress = None self.cmdProgress = None self.sim = SimulatorInteractor(self) self.runSimulation.connect(self.sim.run_simulation) self.stopSimulation.connect(self.sim.stop_simulation) self.sim.simulation_finalized.connect(self.new_simulation_data) self.currentDataset = None self.interpolator = None # sim setup viewer self.targetView = SimulatorView(self) self.targetView.setModel(self.sim.target_model) self.targetView.expanded.connect(self.target_view_changed) self.targetView.collapsed.connect(self.target_view_changed) # sim results viewer self.result_view = QTreeView() # the docking area allows to rearrange the user interface at runtime self.area = pg.dockarea.DockArea() # Window properties icon_size = QSize(25, 25) self.setCentralWidget(self.area) self.resize(1000, 700) self.setWindowTitle("PyMoskito") res_path = get_resource("mosquito.png") icon = QIcon(res_path) self.setWindowIcon(icon) # create docks self.propertyDock = pg.dockarea.Dock("Properties") self.animationDock = pg.dockarea.Dock("Animation") self.regimeDock = pg.dockarea.Dock("Regimes") self.dataDock = pg.dockarea.Dock("Data") self.logDock = pg.dockarea.Dock("Log") self.plotDockPlaceholder = pg.dockarea.Dock("Placeholder") # arrange docks self.area.addDock(self.animationDock, "right") self.area.addDock(self.regimeDock, "left", self.animationDock) self.area.addDock(self.propertyDock, "bottom", self.regimeDock) self.area.addDock(self.dataDock, "bottom", self.propertyDock) self.area.addDock(self.plotDockPlaceholder, "bottom", self.animationDock) self.area.addDock(self.logDock, "bottom", self.dataDock) self.non_plotting_docks = list(self.area.findAll()[1].keys()) # add widgets to the docks self.propertyDock.addWidget(self.targetView) if not vtk_available: self._logger.error( "loading vtk failed with:{}".format(vtk_error_msg)) # check if there is a registered visualizer available_vis = get_registered_visualizers() self._logger.info("found visualizers: {}".format( [name for cls, name in available_vis])) if available_vis: # instantiate the first visualizer self._logger.info("loading visualizer '{}'".format( available_vis[0][1])) self.animationLayout = QVBoxLayout() if issubclass(available_vis[0][0], MplVisualizer): self.animationWidget = QWidget() self.visualizer = available_vis[0][0](self.animationWidget, self.animationLayout) self.animationDock.addWidget(self.animationWidget) elif issubclass(available_vis[0][0], VtkVisualizer): if vtk_available: # vtk window self.animationFrame = QFrame() self.vtkWidget = QVTKRenderWindowInteractor( self.animationFrame) self.animationLayout.addWidget(self.vtkWidget) self.animationFrame.setLayout(self.animationLayout) self.animationDock.addWidget(self.animationFrame) self.vtk_renderer = vtkRenderer() self.vtkWidget.GetRenderWindow().AddRenderer( self.vtk_renderer) self.visualizer = available_vis[0][0](self.vtk_renderer) self.vtkWidget.Initialize() else: self._logger.warning("visualizer depends on vtk which is " "not available on this system!") elif available_vis: raise NotImplementedError else: self.visualizer = None # regime window self.regime_list = QListWidget(self) self.regime_list.setSelectionMode(QAbstractItemView.ExtendedSelection) self.regimeDock.addWidget(self.regime_list) self.regime_list.itemDoubleClicked.connect(self.regime_dclicked) self._regimes = [] self.regime_file_name = "" self.actDeleteRegimes = QAction(self.regime_list) self.actDeleteRegimes.setText("&Delete Selected Regimes") # TODO shortcut works always, not only with focus on the regime list # self.actDeleteRegimes.setShortcutContext(Qt.WindowShortcut) self.actDeleteRegimes.setShortcut(QKeySequence(Qt.Key_Delete)) self.actDeleteRegimes.triggered.connect(self.remove_regime_items) self.actSave = QAction(self) self.actSave.setText('Save Results As') self.actSave.setIcon(QIcon(get_resource("save.png"))) self.actSave.setDisabled(True) self.actSave.setShortcut(QKeySequence.Save) self.actSave.triggered.connect(self.export_simulation_data) self.actLoadRegimes = QAction(self) self.actLoadRegimes.setText("Load Regimes from File") self.actLoadRegimes.setIcon(QIcon(get_resource("load.png"))) self.actLoadRegimes.setDisabled(False) self.actLoadRegimes.setShortcut(QKeySequence.Open) self.actLoadRegimes.triggered.connect(self.load_regime_dialog) self.actExitOnBatchCompletion = QAction(self) self.actExitOnBatchCompletion.setText("&Exit On Batch Completion") self.actExitOnBatchCompletion.setCheckable(True) self.actExitOnBatchCompletion.setChecked( self._settings.value("control/exit_on_batch_completion") == "True") self.actExitOnBatchCompletion.changed.connect( self.update_exit_on_batch_completion_setting) # regime management self.runningBatch = False self._current_regime_index = None self._current_regime_name = None self._regimes = [] self.regimeFinished.connect(self.run_next_regime) self.finishedRegimeBatch.connect(self.regime_batch_finished) # data window self.dataList = QListWidget(self) self.dataDock.addWidget(self.dataList) self.dataList.itemDoubleClicked.connect(self.create_plot) # actions for simulation control self.actSimulateCurrent = QAction(self) self.actSimulateCurrent.setText("&Simulate Current Regime") self.actSimulateCurrent.setIcon(QIcon(get_resource("simulate.png"))) self.actSimulateCurrent.setShortcut(QKeySequence("F5")) self.actSimulateCurrent.triggered.connect(self.start_simulation) self.actSimulateAll = QAction(self) self.actSimulateAll.setText("Simulate &All Regimes") self.actSimulateAll.setIcon(QIcon(get_resource("execute_regimes.png"))) self.actSimulateAll.setShortcut(QKeySequence("F6")) self.actSimulateAll.setDisabled(True) self.actSimulateAll.triggered.connect(self.start_regime_execution) # actions for animation control self.actAutoPlay = QAction(self) self.actAutoPlay.setText("&Autoplay Simulation") self.actAutoPlay.setCheckable(True) self.actAutoPlay.setChecked( self._settings.value("control/autoplay_animation") == "True") self.actAutoPlay.changed.connect(self.update_autoplay_setting) self.actPlayPause = QAction(self) self.actPlayPause.setText("Play Animation") self.actPlayPause.setIcon(QIcon(get_resource("play.png"))) self.actPlayPause.setDisabled(True) self.actPlayPause.setShortcut(QKeySequence(Qt.Key_Space)) self.actPlayPause.triggered.connect(self.play_animation) self.actStop = QAction(self) self.actStop.setText("Stop") self.actStop.setIcon(QIcon(get_resource("stop.png"))) self.actStop.setDisabled(True) self.actStop.triggered.connect(self.stop_animation) self.actSlow = QAction(self) self.actSlow.setText("Slowest") self.actSlow.setIcon(QIcon(get_resource("slow.png"))) self.actSlow.setDisabled(False) self.actSlow.triggered.connect(self.set_slowest_playback_speed) self.actFast = QAction(self) self.actFast.setText("Fastest") self.actFast.setIcon(QIcon(get_resource("fast.png"))) self.actFast.setDisabled(False) self.actFast.triggered.connect(self.set_fastest_playback_speed) self.speedControl = QSlider(Qt.Horizontal, self) self.speedControl.setMaximumSize(200, 25) self.speedControl.setTickPosition(QSlider.TicksBothSides) self.speedControl.setDisabled(False) self.speedControl.setMinimum(0) self.speedControl.setMaximum(12) self.speedControl.setValue(6) self.speedControl.setTickInterval(6) self.speedControl.setSingleStep(2) self.speedControl.setPageStep(3) self.speedControl.valueChanged.connect(self.update_playback_speed) self.timeSlider = QSlider(Qt.Horizontal, self) self.timeSlider.setMinimum(0) self.timeSliderRange = 1000 self.timeSlider.setMaximum(self.timeSliderRange) self.timeSlider.setTickInterval(1) self.timeSlider.setTracking(True) self.timeSlider.setDisabled(True) self.timeSlider.valueChanged.connect(self.update_playback_time) self.playbackTime = .0 self.playbackGain = 1 self.currentStepSize = .0 self.currentEndTime = .0 self.playbackTimer = QTimer() self.playbackTimer.timeout.connect(self.increment_playback_time) self.playbackTimeChanged.connect(self.update_gui) self.playbackTimeout = 33 # in [ms] -> 30 fps self.actResetCamera = QAction(self) self.actResetCamera.setText("Reset Camera") self.actResetCamera.setIcon(QIcon(get_resource("reset_camera.png"))) self.actResetCamera.setDisabled(True) if available_vis: self.actResetCamera.setEnabled(self.visualizer.can_reset_view) self.actResetCamera.triggered.connect(self.reset_camera_clicked) # postprocessing self.actPostprocessing = QAction(self) self.actPostprocessing.setText("Launch Postprocessor") self.actPostprocessing.setIcon(QIcon(get_resource("processing.png"))) self.actPostprocessing.setDisabled(False) self.actPostprocessing.triggered.connect(self.postprocessing_clicked) self.actPostprocessing.setShortcut(QKeySequence("F7")) self.postprocessor = None # toolbar self.toolbarSim = QToolBar("Simulation") self.toolbarSim.setContextMenuPolicy(Qt.PreventContextMenu) self.toolbarSim.setMovable(False) self.toolbarSim.setIconSize(icon_size) self.addToolBar(self.toolbarSim) self.toolbarSim.addAction(self.actLoadRegimes) self.toolbarSim.addAction(self.actSave) self.toolbarSim.addSeparator() self.toolbarSim.addAction(self.actSimulateCurrent) self.toolbarSim.addAction(self.actSimulateAll) self.toolbarSim.addSeparator() self.toolbarSim.addAction(self.actPlayPause) self.toolbarSim.addAction(self.actStop) self.toolbarSim.addWidget(self.timeSlider) self.toolbarSim.addSeparator() self.toolbarSim.addAction(self.actSlow) self.toolbarSim.addWidget(self.speedControl) self.toolbarSim.addAction(self.actFast) self.toolbarSim.addSeparator() self.toolbarSim.addAction(self.actPostprocessing) self.toolbarSim.addAction(self.actResetCamera) self.postprocessor = None # log dock self.logBox = QPlainTextEdit(self) self.logBox.setReadOnly(True) self.logDock.addWidget(self.logBox) # init logger for logging box self.textLogger = PlainTextLogger(logging.INFO) self.textLogger.set_target_cb(self.logBox.appendPlainText) logging.getLogger().addHandler(self.textLogger) # menu bar fileMenu = self.menuBar().addMenu("&File") fileMenu.addAction(self.actLoadRegimes) fileMenu.addAction(self.actSave) fileMenu.addAction("&Quit", self.close) editMenu = self.menuBar().addMenu("&Edit") editMenu.addAction(self.actDeleteRegimes) simMenu = self.menuBar().addMenu("&Simulation") simMenu.addAction(self.actSimulateCurrent) simMenu.addAction(self.actSimulateAll) simMenu.addAction(self.actExitOnBatchCompletion) simMenu.addAction(self.actPostprocessing) animMenu = self.menuBar().addMenu("&Animation") animMenu.addAction(self.actPlayPause) animMenu.addAction("&Increase Playback Speed", self.increment_playback_speed, QKeySequence(Qt.CTRL + Qt.Key_Plus)) animMenu.addAction("&Decrease Playback Speed", self.decrement_playback_speed, QKeySequence(Qt.CTRL + Qt.Key_Minus)) animMenu.addAction("&Reset Playback Speed", self.reset_playback_speed, QKeySequence(Qt.CTRL + Qt.Key_0)) animMenu.addAction(self.actAutoPlay) animMenu.addAction(self.actResetCamera) helpMenu = self.menuBar().addMenu("&Help") helpMenu.addAction("&Online Documentation", self.show_online_docs) helpMenu.addAction("&About", self.show_info) # status bar self.status = QStatusBar(self) self.setStatusBar(self.status) self.statusLabel = QLabel("Ready.") self.statusBar().addPermanentWidget(self.statusLabel) self.timeLabel = QLabel("current time: 0.0") self.statusBar().addPermanentWidget(self.timeLabel) self._logger.info("Simulation GUI is up and running.")
def setupUi(self, Widget): # widgety rysujące kształty, instancje klasy Ksztalt self.ksztalt1 = Ksztalt(self, Ksztalty.Polygon) self.ksztalt2 = Ksztalt(self, Ksztalty.Ellipse) self.ksztaltAktywny = self.ksztalt1 # przyciski CheckBox ### uklad = QVBoxLayout() # układ pionowy self.grupaChk = QButtonGroup() for i, v in enumerate(('Kwadrat', 'Koło', 'Trójkąt', 'Linia')): self.chk = QCheckBox(v) self.grupaChk.addButton(self.chk, i) uklad.addWidget(self.chk) self.grupaChk.buttons()[self.ksztaltAktywny.ksztalt].setChecked(True) # CheckBox do wyboru aktywnego kształtu self.ksztaltChk = QCheckBox('<=') self.ksztaltChk.setChecked(True) uklad.addWidget(self.ksztaltChk) # układ poziomy dla kształtów oraz przycisków CheckBox ukladH1 = QHBoxLayout() ukladH1.addWidget(self.ksztalt1) ukladH1.addLayout(uklad) ukladH1.addWidget(self.ksztalt2) # koniec CheckBox ### # Slider i LCDNumber ### self.suwak = QSlider(Qt.Horizontal) self.suwak.setMinimum(0) self.suwak.setMaximum(255) self.lcd = QLCDNumber() self.lcd.setSegmentStyle(QLCDNumber.Flat) # układ poziomy (splitter) dla slajdera i lcd ukladH2 = QSplitter(Qt.Horizontal, self) ukladH2.addWidget(self.suwak) ukladH2.addWidget(self.lcd) ukladH2.setSizes((125, 75)) # przyciski RadioButton ### self.ukladR = QHBoxLayout() for v in ('R', 'G', 'B'): self.radio = QRadioButton(v) self.ukladR.addWidget(self.radio) self.ukladR.itemAt(0).widget().setChecked(True) # grupujemy przyciski self.grupaRBtn = QGroupBox('Opcje RGB') self.grupaRBtn.setLayout(self.ukladR) self.grupaRBtn.setObjectName('Radio') self.grupaRBtn.setCheckable(True) # układ poziomy dla grupy Radio ukladH3 = QHBoxLayout() ukladH3.addWidget(self.grupaRBtn) # koniec RadioButton ### # Lista ComboBox i SpinBox ### self.listaRGB = QComboBox(self) for v in ('R', 'G', 'B'): self.listaRGB.addItem(v) self.listaRGB.setEnabled(False) # SpinBox self.spinRGB = QSpinBox() self.spinRGB.setMinimum(0) self.spinRGB.setMaximum(255) self.spinRGB.setEnabled(False) # układ pionowy dla ComboBox i SpinBox uklad = QVBoxLayout() uklad.addWidget(self.listaRGB) uklad.addWidget(self.spinRGB) # do układu poziomego grupy Radio dodajemy układ ComboBox i SpinBox ukladH3.insertSpacing(1, 25) ukladH3.addLayout(uklad) # koniec ComboBox i SpinBox ### # główny układ okna, pionowy ### ukladOkna = QVBoxLayout() ukladOkna.addLayout(ukladH1) ukladOkna.addWidget(ukladH2) ukladOkna.addLayout(ukladH3) self.setLayout(ukladOkna) # przypisanie układu do okna głównego self.setWindowTitle('Widżety')
def __init__(self, pPadre): self.padre = pPadre super(PanelParametros, self).__init__() font = QFont() font.setFamily('Times font') font.setFixedPitch(False) font.setPointSize(12) font.setBold(True) PanelParametros.vboxLayout = QVBoxLayout() self.setLayout(self.vboxLayout) PanelParametros.labelVacio = QLabel() self.labelValorSlider = QLabel('0', self) self.labelValorSlider.setFont(font) self.labelValorSlider.setFixedWidth(70) self.labelValorSlider.setFixedHeight(30) self.labelValorSlider.setStyleSheet( 'color:white; background-color: #444952; border-radius: 10px') self.labelValorSlider.setAlignment(Qt.AlignCenter) self.vboxLayout.addWidget(self.labelValorSlider) PanelParametros.slider = QSlider(Qt.Horizontal, self) PanelParametros.slider.setFixedWidth(520) PanelParametros.slider.setFixedHeight(30) PanelParametros.slider.setMinimum(0) PanelParametros.slider.setMaximum(1000) PanelParametros.slider.valueChanged[int].connect(self.changeValue) PanelParametros.slider.setStyleSheet( 'QSlider::handle:horizontal {background-color: #8ab71b;}') PanelParametros.vboxLayout.addWidget(PanelParametros.slider) PanelParametros.labelSlider = QLabel('RADIACIÓN') PanelParametros.labelSlider.setStyleSheet('color: white') PanelParametros.labelSlider.setFont(font) PanelParametros.vboxLayout.addWidget(PanelParametros.labelSlider) lbl = QLabel() lbl.setFixedHeight(100) self.vboxLayout.addWidget(lbl) self.labelSw1 = QLabel('Switch 1') self.labelSw1.setFixedWidth(90) self.labelSw1.setFont(font) self.labelSw1.setStyleSheet('color:white') self.labelBt1 = QLabel() self.labelBt1.setFixedSize(80, 80) self.labelBt1.setStyleSheet( 'border-color: black; background-color: red; border-radius: 40px; border: 10px solid black' ) self.labelSw2 = QLabel('Switch 2') self.labelSw2.setFixedWidth(90) self.labelSw2.setFont(font) self.labelSw2.setStyleSheet('color:white') self.labelBt2 = QLabel() self.labelBt2.setFixedSize(80, 80) self.labelBt2.setStyleSheet( 'background-color: red; border-radius: 40px; border: 10px solid black' ) self.labelSw3 = QLabel('Switch 3') self.labelSw3.setFixedWidth(90) self.labelSw3.setFont(font) self.labelSw3.setStyleSheet('color:white') self.labelBt3 = QLabel() self.labelBt3.setFixedSize(80, 80) self.labelBt3.setStyleSheet( 'background-color: red; border-radius: 40px; border: 10px solid black' ) lay1 = QHBoxLayout() lay1.addWidget(self.labelSw1) lay1.addWidget(self.labelBt1) panelay1 = QFrame() panelay1.setLayout(lay1) lay2 = QHBoxLayout() lay2.addWidget(self.labelSw2) lay2.addWidget(self.labelBt2) panelay2 = QFrame() panelay2.setLayout(lay2) lay3 = QHBoxLayout() lay3.addWidget(self.labelSw3) lay3.addWidget(self.labelBt3) panelay3 = QFrame() panelay3.setLayout(lay3) self.vboxLayout.addWidget(panelay1) self.vboxLayout.addWidget(panelay2) self.vboxLayout.addWidget(panelay3) self.botonSimular = QPushButton('SIMULAR', self) self.botonSimular.setFont(font) self.botonSimular.setStyleSheet( 'background-color: #2aa1d3; color: white; border-radius: 10px') self.botonSimular.setGeometry(0, 0, 150, 60) self.botonSimular.setFixedHeight(50) self.botonSimular.clicked.connect(self.simular) self.labelVacio.setFixedHeight(100) self.vboxLayout.addWidget(self.botonSimular)
def __init__(self, parent=None): super(VideoWindow, self).__init__(parent) self.setWindowTitle("Beat timestamp editor") self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) videoWidget = QVideoWidget() self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.setText("Play") self.playButton.clicked.connect(self.play) #add timestamp self.add = QPushButton() self.add.setEnabled(False) self.add.setIcon(self.style().standardIcon(QStyle.SP_DialogApplyButton)) self.add.setText("Add") self.add.clicked.connect(self.add_timestamp) #clear timestamps self.clear = QPushButton() self.clear.setEnabled(False) self.clear.setIcon(self.style().standardIcon(QStyle.SP_DialogCancelButton)) self.clear.setText("Clear") self.clear.clicked.connect(self.clear_timestamps) #-------------------- #timestamp list self.list = QLabel() self.list.setText("Timestamps: ") self.list.setWordWrap(True) #*------------------ self.positionSlider = QSlider(Qt.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) self.errorLabel = QLabel() self.errorLabel.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) # Create new action openAction = QAction(QIcon('open.png'), '&Open', self) openAction.setShortcut('Ctrl+O') openAction.setStatusTip('Open movie') openAction.triggered.connect(self.openFile) # Create exit action exitAction = QAction(QIcon('exit.png'), '&Exit', self) exitAction.setShortcut('Ctrl+Q') exitAction.setStatusTip('Exit application') exitAction.triggered.connect(self.exitCall) #Create save action self.saveAction = QAction(QIcon('save.png'), '&Save', self) self.saveAction.setShortcut('Ctrl+S') self.saveAction.setStatusTip('Save .txt file') self.saveAction.triggered.connect(self.saveFile) self.saveAction.setEnabled(False) # Create menu bar and add action menuBar = self.menuBar() fileMenu = menuBar.addMenu('&File') #fileMenu.addAction(newAction) fileMenu.addAction(openAction) fileMenu.addAction(self.saveAction) fileMenu.addAction(exitAction) # Create a widget for window contents wid = QWidget(self) self.setCentralWidget(wid) # Create layouts to place inside widget controlLayout = QGridLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(self.playButton,0,0) controlLayout.addWidget(self.positionSlider,0,1) controlLayout.addWidget(self.add,1,0) controlLayout.addWidget(self.list,1,1,2,1) controlLayout.addWidget(self.clear,2,0) layout = QVBoxLayout() layout.addLayout(controlLayout) layout.addWidget(self.errorLabel) # Set widget to contain window contents wid.setLayout(layout) self.mediaPlayer.setVideoOutput(videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError)
def __init__(self, window, plugin, keystore, device_id): title = _("{} Settings").format(plugin.device) super(SettingsDialog, self).__init__(window, title) self.setMaximumWidth(540) devmgr = plugin.device_manager() config = devmgr.config handler = keystore.handler thread = keystore.thread hs_cols, hs_rows = (128, 64) def invoke_client(method, *args, **kw_args): unpair_after = kw_args.pop('unpair_after', False) def task(): client = devmgr.client_by_id(device_id) if not client: raise RuntimeError("Device not connected") if method: getattr(client, method)(*args, **kw_args) if unpair_after: devmgr.unpair_id(device_id) return client.features thread.add(task, on_success=update) def update(features): self.features = features set_label_enabled() if features.bootloader_hash: bl_hash = bh2u(features.bootloader_hash) bl_hash = "\n".join([bl_hash[:32], bl_hash[32:]]) else: bl_hash = "N/A" noyes = [_("No"), _("Yes")] endis = [_("Enable Passphrases"), _("Disable Passphrases")] disen = [_("Disabled"), _("Enabled")] setchange = [_("Set a PIN"), _("Change PIN")] version = "%d.%d.%d" % (features.major_version, features.minor_version, features.patch_version) device_label.setText(features.label) pin_set_label.setText(noyes[features.pin_protection]) passphrases_label.setText(disen[features.passphrase_protection]) bl_hash_label.setText(bl_hash) label_edit.setText(features.label) device_id_label.setText(features.device_id) initialized_label.setText(noyes[features.initialized]) version_label.setText(version) clear_pin_button.setVisible(features.pin_protection) clear_pin_warning.setVisible(features.pin_protection) pin_button.setText(setchange[features.pin_protection]) pin_msg.setVisible(not features.pin_protection) passphrase_button.setText(endis[features.passphrase_protection]) language_label.setText(features.language) def set_label_enabled(): label_apply.setEnabled(label_edit.text() != self.features.label) def rename(): invoke_client('change_label', label_edit.text()) def toggle_passphrase(): title = _("Confirm Toggle Passphrase Protection") currently_enabled = self.features.passphrase_protection if currently_enabled: msg = _( "After disabling passphrases, you can only pair this " "Vestx-Electrum wallet if it had an empty passphrase. " "If its passphrase was not empty, you will need to " "create a new wallet with the install wizard. You " "can use this wallet again at any time by re-enabling " "passphrases and entering its passphrase.") else: msg = _( "Your current Vestx-Electrum wallet can only be used with " "an empty passphrase. You must create a separate " "wallet with the install wizard for other passphrases " "as each one generates a new set of addresses.") msg += "\n\n" + _("Are you sure you want to proceed?") if not self.question(msg, title=title): return invoke_client('toggle_passphrase', unpair_after=currently_enabled) def change_homescreen(): dialog = QFileDialog(self, _("Choose Homescreen")) filename, __ = dialog.getOpenFileName() if not filename: return # user cancelled if filename.endswith('.toif'): img = open(filename, 'rb').read() if img[:8] != b'TOIf\x90\x00\x90\x00': handler.show_error( 'File is not a TOIF file with size of 144x144') return else: from PIL import Image # FIXME im = Image.open(filename) if im.size != (128, 64): handler.show_error('Image must be 128 x 64 pixels') return im = im.convert('1') pix = im.load() img = bytearray(1024) for j in range(64): for i in range(128): if pix[i, j]: o = (i + j * 128) img[o // 8] |= (1 << (7 - o % 8)) img = bytes(img) invoke_client('change_homescreen', img) def clear_homescreen(): invoke_client('change_homescreen', b'\x00') def set_pin(): invoke_client('set_pin', remove=False) def clear_pin(): invoke_client('set_pin', remove=True) def wipe_device(): wallet = window.wallet if wallet and sum(wallet.get_balance()): title = _("Confirm Device Wipe") msg = _("Are you SURE you want to wipe the device?\n" "Your wallet still has bitcoins in it!") if not self.question( msg, title=title, icon=QMessageBox.Critical): return invoke_client('wipe_device', unpair_after=True) def slider_moved(): mins = timeout_slider.sliderPosition() timeout_minutes.setText(_("{:2d} minutes").format(mins)) def slider_released(): config.set_session_timeout(timeout_slider.sliderPosition() * 60) # Information tab info_tab = QWidget() info_layout = QVBoxLayout(info_tab) info_glayout = QGridLayout() info_glayout.setColumnStretch(2, 1) device_label = QLabel() pin_set_label = QLabel() passphrases_label = QLabel() version_label = QLabel() device_id_label = QLabel() bl_hash_label = QLabel() bl_hash_label.setWordWrap(True) language_label = QLabel() initialized_label = QLabel() rows = [ (_("Device Label"), device_label), (_("PIN set"), pin_set_label), (_("Passphrases"), passphrases_label), (_("Firmware Version"), version_label), (_("Device ID"), device_id_label), (_("Bootloader Hash"), bl_hash_label), (_("Language"), language_label), (_("Initialized"), initialized_label), ] for row_num, (label, widget) in enumerate(rows): info_glayout.addWidget(QLabel(label), row_num, 0) info_glayout.addWidget(widget, row_num, 1) info_layout.addLayout(info_glayout) # Settings tab settings_tab = QWidget() settings_layout = QVBoxLayout(settings_tab) settings_glayout = QGridLayout() # Settings tab - Label label_msg = QLabel( _("Name this {}. If you have multiple devices " "their labels help distinguish them.").format(plugin.device)) label_msg.setWordWrap(True) label_label = QLabel(_("Device Label")) label_edit = QLineEdit() label_edit.setMinimumWidth(150) label_edit.setMaxLength(plugin.MAX_LABEL_LEN) label_apply = QPushButton(_("Apply")) label_apply.clicked.connect(rename) label_edit.textChanged.connect(set_label_enabled) settings_glayout.addWidget(label_label, 0, 0) settings_glayout.addWidget(label_edit, 0, 1, 1, 2) settings_glayout.addWidget(label_apply, 0, 3) settings_glayout.addWidget(label_msg, 1, 1, 1, -1) # Settings tab - PIN pin_label = QLabel(_("PIN Protection")) pin_button = QPushButton() pin_button.clicked.connect(set_pin) settings_glayout.addWidget(pin_label, 2, 0) settings_glayout.addWidget(pin_button, 2, 1) pin_msg = QLabel( _("PIN protection is strongly recommended. " "A PIN is your only protection against someone " "stealing your bitcoins if they obtain physical " "access to your {}.").format(plugin.device)) pin_msg.setWordWrap(True) pin_msg.setStyleSheet("color: red") settings_glayout.addWidget(pin_msg, 3, 1, 1, -1) # Settings tab - Homescreen homescreen_label = QLabel(_("Homescreen")) homescreen_change_button = QPushButton(_("Change...")) homescreen_clear_button = QPushButton(_("Reset")) homescreen_change_button.clicked.connect(change_homescreen) try: import PIL except ImportError: homescreen_change_button.setDisabled(True) homescreen_change_button.setToolTip( _("Required package 'PIL' is not available - Please install it." )) homescreen_clear_button.clicked.connect(clear_homescreen) homescreen_msg = QLabel( _("You can set the homescreen on your " "device to personalize it. You must " "choose a {} x {} monochrome black and " "white image.").format(hs_cols, hs_rows)) homescreen_msg.setWordWrap(True) settings_glayout.addWidget(homescreen_label, 4, 0) settings_glayout.addWidget(homescreen_change_button, 4, 1) settings_glayout.addWidget(homescreen_clear_button, 4, 2) settings_glayout.addWidget(homescreen_msg, 5, 1, 1, -1) # Settings tab - Session Timeout timeout_label = QLabel(_("Session Timeout")) timeout_minutes = QLabel() timeout_slider = QSlider(Qt.Horizontal) timeout_slider.setRange(1, 60) timeout_slider.setSingleStep(1) timeout_slider.setTickInterval(5) timeout_slider.setTickPosition(QSlider.TicksBelow) timeout_slider.setTracking(True) timeout_msg = QLabel( _("Clear the session after the specified period " "of inactivity. Once a session has timed out, " "your PIN and passphrase (if enabled) must be " "re-entered to use the device.")) timeout_msg.setWordWrap(True) timeout_slider.setSliderPosition(config.get_session_timeout() // 60) slider_moved() timeout_slider.valueChanged.connect(slider_moved) timeout_slider.sliderReleased.connect(slider_released) settings_glayout.addWidget(timeout_label, 6, 0) settings_glayout.addWidget(timeout_slider, 6, 1, 1, 3) settings_glayout.addWidget(timeout_minutes, 6, 4) settings_glayout.addWidget(timeout_msg, 7, 1, 1, -1) settings_layout.addLayout(settings_glayout) settings_layout.addStretch(1) # Advanced tab advanced_tab = QWidget() advanced_layout = QVBoxLayout(advanced_tab) advanced_glayout = QGridLayout() # Advanced tab - clear PIN clear_pin_button = QPushButton(_("Disable PIN")) clear_pin_button.clicked.connect(clear_pin) clear_pin_warning = QLabel( _("If you disable your PIN, anyone with physical access to your " "{} device can spend your bitcoins.").format(plugin.device)) clear_pin_warning.setWordWrap(True) clear_pin_warning.setStyleSheet("color: red") advanced_glayout.addWidget(clear_pin_button, 0, 2) advanced_glayout.addWidget(clear_pin_warning, 1, 0, 1, 5) # Advanced tab - toggle passphrase protection passphrase_button = QPushButton() passphrase_button.clicked.connect(toggle_passphrase) passphrase_msg = WWLabel(PASSPHRASE_HELP) passphrase_warning = WWLabel(PASSPHRASE_NOT_PIN) passphrase_warning.setStyleSheet("color: red") advanced_glayout.addWidget(passphrase_button, 3, 2) advanced_glayout.addWidget(passphrase_msg, 4, 0, 1, 5) advanced_glayout.addWidget(passphrase_warning, 5, 0, 1, 5) # Advanced tab - wipe device wipe_device_button = QPushButton(_("Wipe Device")) wipe_device_button.clicked.connect(wipe_device) wipe_device_msg = QLabel( _("Wipe the device, removing all data from it. The firmware " "is left unchanged.")) wipe_device_msg.setWordWrap(True) wipe_device_warning = QLabel( _("Only wipe a device if you have the recovery seed written down " "and the device wallet(s) are empty, otherwise the bitcoins " "will be lost forever.")) wipe_device_warning.setWordWrap(True) wipe_device_warning.setStyleSheet("color: red") advanced_glayout.addWidget(wipe_device_button, 6, 2) advanced_glayout.addWidget(wipe_device_msg, 7, 0, 1, 5) advanced_glayout.addWidget(wipe_device_warning, 8, 0, 1, 5) advanced_layout.addLayout(advanced_glayout) advanced_layout.addStretch(1) tabs = QTabWidget(self) tabs.addTab(info_tab, _("Information")) tabs.addTab(settings_tab, _("Settings")) tabs.addTab(advanced_tab, _("Advanced")) dialog_vbox = QVBoxLayout(self) dialog_vbox.addWidget(tabs) dialog_vbox.addLayout(Buttons(CloseButton(self))) # Update information invoke_client(None)
def __init__(self, *args, **kwargs): super(roboGUI,self).__init__() self.window = QWidget(self) self.setCentralWidget(self.window) self.resize(300,100) self.setWindowTitle("roboGUI") self.layout = QVBoxLayout() self.startButton = QPushButton("START",self) self.startButton.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Expanding) self.startButton.resize(self.startButton.minimumSizeHint()) self.layout.addWidget(self.startButton) self.stopButton = QPushButton("STOP",self) self.stopButton.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Expanding) self.stopButton.resize(self.stopButton.minimumSizeHint()) self.layout.addWidget(self.stopButton) self.param1text = QHBoxLayout() self.param1title = QLabel("Parameter 1") self.param1value = QLabel(str(param1val)) self.param1slider = QSlider(Qt.Horizontal) self.param1slider.setMinimum(1) self.param1slider.setMaximum(250) self.param1slider.setValue(param1val) self.param1slider.setTickInterval(1) self.param1text.addWidget(self.param1title) self.param1text.addWidget(self.param1value) self.layout.addLayout(self.param1text) self.layout.addWidget(self.param1slider) self.param2text = QHBoxLayout() self.param2title = QLabel("Parameter 2") self.param2value = QLabel(str(param2val)) self.param2slider = QSlider(Qt.Horizontal) self.param2slider.setMinimum(1) self.param2slider.setMaximum(50) self.param2slider.setValue(param2val) self.param2slider.setTickInterval(1) self.param2text.addWidget(self.param2title) self.param2text.addWidget(self.param2value) self.layout.addLayout(self.param2text) self.layout.addWidget(self.param2slider) self.valuetext = QHBoxLayout() self.valuetitle = QLabel("Minimum Value") self.valuevalue = QLabel(str(valueMin)) self.valueslider = QSlider(Qt.Horizontal) self.valueslider.setMinimum(0) self.valueslider.setMaximum(255) self.valueslider.setValue(valueMin) self.valueslider.setTickInterval(1) self.valuetext.addWidget(self.valuetitle) self.valuetext.addWidget(self.valuevalue) self.layout.addLayout(self.valuetext) self.layout.addWidget(self.valueslider) self.window.setLayout(self.layout) self.window.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Expanding) self.thread = None self.worker = None self.param1slider.valueChanged[int].connect(self.changedValue_param1) self.param2slider.valueChanged[int].connect(self.changedValue_param2) self.valueslider.valueChanged[int].connect(self.changedValue_valueMin) self.startButton.clicked.connect(self.startLoop)
def __init__(self): super().__init__() self.setObjectName("Genesis") self.resize(814, 600) font = QFont() font.setFamily("Cascadia Code PL") font.setPointSize(16) self.setFont(font) self.contenedor = QWidget(self) self.contenedor.setObjectName("contenedor") self.grid_central = QGridLayout(self.contenedor) self.grid_central.setObjectName("grid_central") self.marco = QFrame(self.contenedor) self.marco.setStyleSheet("background-color: teal;") self.marco.setFrameShape(QFrame.Panel) self.marco.setFrameShadow(QFrame.Sunken) self.marco.setObjectName("marco") self.grid = QGridLayout(self.marco) self.grid.setObjectName("grid") self.reproductor = QGridLayout() self.reproductor.setObjectName("reproductor") self.logo = QLabel(self.marco) self.logo.setMinimumSize(16777215, 16777215) self.logo.setMaximumSize(QSize(16777215, 16777215)) font = QFont() font.setPointSize(22) self.logo.setFont(font) self.logo.setFrameShape(QFrame.StyledPanel) self.logo.setPixmap(QPixmap(":/img/genesis.jpg")) self.logo.setScaledContents(True) self.logo.setAlignment(Qt.AlignCenter) self.logo.setObjectName("logo") self.reproductor.addWidget(self.logo, 0, 0, 1, 1) self.grid.addLayout(self.reproductor, 0, 0, 1, 1) self.grid_central.addWidget(self.marco, 1, 0, 1, 1) self.lista = QListView(self.contenedor) self.lista.setMinimumSize(QSize(300, 16777215)) self.lista.setMaximumSize(QSize(300, 16777215)) self.lista.setStyleSheet("color: rgb(255, 255, 255);\n" "background-color: darkred;") self.lista.setObjectName("lista") self.grid_central.addWidget(self.lista, 1, 1, 1, 1) self.box_controles = QGroupBox(self.contenedor) self.box_controles.setMaximumSize(QSize(16777215, 122)) self.box_controles.setObjectName("box_controles") self.grid_controles = QGridLayout(self.box_controles) self.grid_controles.setObjectName("grid_controles") self.parar = QPushButton(self.box_controles) self.parar.setMaximumSize(QSize(50, 109)) self.parar.setToolTip('Detener Reproduccion') icon = QIcon() icon.addPixmap(QPixmap(":/img/stop.svg"), QIcon.Normal, QIcon.Off) self.parar.setIcon(icon) self.parar.setIconSize(QSize(48, 29)) self.parar.setFlat(True) self.parar.setObjectName("parar") self.grid_controles.addWidget(self.parar, 0, 1, 1, 1) self.adelante = QPushButton(self.box_controles) self.adelante.setMaximumSize(QSize(50, 109)) self.adelante.setToolTip('Adelantar a la siguiente cancion') icon1 = QIcon() icon1.addPixmap(QPixmap(":/img/next.svg"), QIcon.Normal, QIcon.Off) self.adelante.setIcon(icon1) self.adelante.setIconSize(QSize(48, 29)) self.adelante.setFlat(True) self.adelante.setObjectName("adelante") self.grid_controles.addWidget(self.adelante, 0, 3, 1, 1) self.reproducir = QPushButton(self.box_controles) self.reproducir.setMaximumSize(QtCore.QSize(50, 109)) icon2 = QIcon() icon2.addPixmap(QPixmap(":/img/play.svg"), QIcon.Normal, QIcon.Off) self.reproducir.setIcon(icon2) self.reproducir.setIconSize(QSize(48, 29)) self.reproducir.setFlat(True) self.reproducir.setObjectName("reproducir") self.grid_controles.addWidget(self.reproducir, 0, 0, 1, 1) self.cargar = QPushButton(self.box_controles) self.cargar.setMaximumSize(QSize(50, 109)) self.cargar.setToolTip('Cargar archivo') icon3 = QIcon() icon3.addPixmap(QPixmap(":/img/eject-1.svg"), QIcon.Normal, QIcon.Off) self.cargar.setIcon(icon3) self.cargar.setIconSize(QSize(48, 29)) self.cargar.setFlat(True) self.cargar.setObjectName("cargar") self.grid_controles.addWidget(self.cargar, 0, 4, 1, 1) self.grid_sliders = QHBoxLayout() self.grid_sliders.setObjectName("grid_sliders") self.tiempo = QSlider(self.box_controles) self.tiempo.setOrientation(Qt.Horizontal) self.tiempo.setObjectName("tiempo") self.grid_sliders.addWidget(self.tiempo) self.logo_volumen = QPushButton(self.box_controles) self.logo_volumen.setMaximumSize(QSize(41, 41)) icon4 = QIcon() icon4.addPixmap(QPixmap(":/img/altavoz3.png"), QIcon.Normal, QIcon.Off) self.logo_volumen.setIcon(icon4) self.logo_volumen.setIconSize(QSize(25, 25)) self.logo_volumen.setFlat(True) self.logo_volumen.setObjectName("logo_volumen") self.grid_sliders.addWidget(self.logo_volumen) self.volumen = QSlider(self.box_controles) self.volumen.setMaximumSize(QSize(139, 16777215)) self.volumen.setPageStep(1) self.volumen.setOrientation(Qt.Horizontal) self.volumen.setObjectName("volumen") self.grid_sliders.addWidget(self.volumen) self.grid_controles.addLayout(self.grid_sliders, 1, 0, 1, 7) self.atras = QPushButton(self.box_controles) self.atras.setMaximumSize(QSize(50, 109)) self.atras.setToolTip('Atrasar a la anterior cancion') icon5 = QIcon() icon5.addPixmap(QPixmap(":/img/back.svg"), QIcon.Normal, QIcon.Off) self.atras.setIcon(icon5) self.atras.setIconSize(QSize(48, 29)) self.atras.setFlat(True) self.atras.setObjectName("atras") self.grid_controles.addWidget(self.atras, 0, 2, 1, 1) self.menu = QPushButton(self.box_controles) self.menu.setMaximumSize(QSize(50, 109)) self.menu.setToolTip('Ocultar la lista de reproduccion') icon6 = QIcon() icon6.addPixmap(QPixmap(":/img/menu2.png"), QIcon.Normal, QIcon.Off) self.menu.setIcon(icon6) self.menu.setIconSize(QSize(48, 29)) self.menu.setFlat(True) self.menu.setObjectName("menu") self.grid_controles.addWidget(self.menu, 0, 6, 1, 1) self.datos = QLabel(self.box_controles) self.datos.setMinimumSize(QSize(0, 0)) self.datos.setFrameShape(QFrame.StyledPanel) self.datos.setIndent(13) self.datos.setObjectName("datos") self.grid_controles.addWidget(self.datos, 0, 5, 1, 1) self.grid_central.addWidget(self.box_controles, 0, 0, 1, 2) self.setCentralWidget(self.contenedor) self.setWindowTitle(" Genesis Reproductor") self.setWindowIcon(QIcon('img/icono.jpg')) self.box_controles.setTitle(" Bienvenido ...") self.show()
def __init__(self, session, tool_name): self._default_color = (255, 153, 204, 128) # Transparent pink self._max_slider_value = 1000 # QSlider only handles integer values self._max_slider_radius = 100.0 # Float maximum radius value, scene units self._block_text_update = False # Avoid radius slider and text continuous updating each other. self._block_slider_update = False # Avoid radius slider and text continuous updating each other. b = session.main_view.drawing_bounds() vradius = 100 if b is None else b.radius() self._max_slider_radius = vradius center = b.center() if b else (0, 0, 0) self._sphere_model = SphereModel('eraser sphere', session, self._default_color, center, 0.2 * vradius) ToolInstance.__init__(self, session, tool_name) self.display_name = 'Map Eraser' from chimerax.ui import MainToolWindow tw = MainToolWindow(self) self.tool_window = tw parent = tw.ui_area from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QFrame, QCheckBox, QLabel, QPushButton, QLineEdit, QSlider from PyQt5.QtCore import Qt layout = QVBoxLayout(parent) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) parent.setLayout(layout) sf = QFrame(parent) layout.addWidget(sf) slayout = QHBoxLayout(sf) slayout.setContentsMargins(0, 0, 0, 0) slayout.setSpacing(10) self._show_eraser = se = QCheckBox('Show map eraser sphere', sf) se.setCheckState(Qt.Checked) se.stateChanged.connect(self._show_eraser_cb) slayout.addWidget(se) from chimerax.ui.widgets import ColorButton self._sphere_color = sc = ColorButton(sf, max_size=(16, 16), has_alpha_channel=True) sc.color = self._default_color sc.color_changed.connect(self._change_color_cb) slayout.addWidget(sc) slayout.addStretch(1) # Extra space at end rf = QFrame(parent) layout.addWidget(rf) rlayout = QHBoxLayout(rf) rlayout.setContentsMargins(0, 0, 0, 0) rlayout.setSpacing(4) rl = QLabel('Radius', rf) rlayout.addWidget(rl) self._radius_entry = rv = QLineEdit('', rf) rv.setMaximumWidth(40) rv.returnPressed.connect(self._radius_changed_cb) rlayout.addWidget(rv) self._radius_slider = rs = QSlider(Qt.Horizontal, rf) smax = self._max_slider_value rs.setRange(0, smax) rs.valueChanged.connect(self._radius_slider_moved_cb) rlayout.addWidget(rs) rv.setText('%.4g' % self._sphere_model.radius) self._radius_changed_cb() ef = QFrame(parent) layout.addWidget(ef) elayout = QHBoxLayout(ef) elayout.setContentsMargins(0, 0, 0, 0) elayout.setSpacing(30) eb = QPushButton('Erase inside sphere', ef) eb.clicked.connect(self._erase_in_sphere) elayout.addWidget(eb) eo = QPushButton('Erase outside sphere', ef) eo.clicked.connect(self._erase_outside_sphere) elayout.addWidget(eo) rb = QPushButton('Reduce map bounds', ef) rb.clicked.connect(self._crop_map) elayout.addWidget(rb) elayout.addStretch(1) # Extra space at end layout.addStretch(1) # Extra space at end tw.manage(placement="side") # When displayed models change update radius slider range. from chimerax.core.models import MODEL_DISPLAY_CHANGED h = session.triggers.add_handler(MODEL_DISPLAY_CHANGED, self._model_display_change) self._model_display_change_handler = h
def initUI(self): self.setMinimumSize(1340, 200) self.setMaximumSize(1340, 200) '''Radio buttons for Original/RGB/HSV/YUV images''' self.origButton = QRadioButton("Original") self.rgbButton = QRadioButton("RGB") self.hsvButton = QRadioButton("HSV") self.yuvButton = QRadioButton("YUV") '''Signals for toggled radio buttons''' self.origButton.toggled.connect(lambda: self.origButtonState()) self.rgbButton.toggled.connect(lambda: self.rgbButtonState()) self.hsvButton.toggled.connect(lambda: self.hsvButtonState()) self.yuvButton.toggled.connect(lambda: self.yuvButtonState()) self.origButton.setChecked(True) '''Main layout of the widget will contain several vertical layouts''' self.hLayout = QHBoxLayout(self) self.hLayout.setObjectName("hLayout") ''' Vertical Layout for radio buttons ''' self.radioLayout = QVBoxLayout() self.radioLayout.setObjectName("radioLayout") self.radioLayout.addWidget(self.origButton) self.radioLayout.addWidget(self.rgbButton) self.radioLayout.addWidget(self.hsvButton) self.radioLayout.addWidget(self.yuvButton) self.vSpacer = QSpacerItem(30, 500, QSizePolicy.Ignored, QSizePolicy.Ignored) self.radioLayout.addItem(self.vSpacer) hmin, smin, vmin = HSVMIN hmax, smax, vmax = HSVMAX ''' Vertical Layout for HMIN Slider''' self.hminLayout = QVBoxLayout() self.hminLayout.setObjectName("hminLayout") self.hminLabel = QLabel("HMin") self.hminValue = QLabel("0") self.hminValue.setAlignment(Qt.AlignCenter) self.hminSlider = QSlider(Qt.Vertical) self.hminSlider.setMinimum(hmin) self.hminSlider.setMaximum(hmax) self.hminSlider.setValue(hmin) self.hminLayout.addWidget(self.hminLabel) self.hminLayout.addWidget(self.hminValue) self.hminLayout.addWidget(self.hminSlider) ''' Vertical Layout for HMAX Slider''' self.hmaxLayout = QVBoxLayout() self.hmaxLayout.setObjectName("hmaxLayout") self.hmaxLabel = QLabel("HMax") self.hmaxValue = QLabel("6") self.hmaxValue.setAlignment(Qt.AlignCenter) self.hmaxSlider = QSlider(Qt.Vertical) self.hmaxSlider.setMinimum(hmin) self.hmaxSlider.setMaximum(hmax) self.hmaxSlider.setValue(hmax) self.hmaxLayout.addWidget(self.hmaxLabel) self.hmaxLayout.addWidget(self.hmaxValue) self.hmaxLayout.addWidget(self.hmaxSlider) ''' Vertical Layout for SMIN Slider''' self.sminLayout = QVBoxLayout() self.sminLayout.setObjectName("sminLayout") self.sminLabel = QLabel("SMin") self.sminValue = QLabel("0") self.sminValue.setAlignment(Qt.AlignCenter) self.sminSlider = QSlider(Qt.Vertical) self.sminSlider.setMinimum(smin) self.sminSlider.setMaximum(smax) self.sminSlider.setValue(smin) self.sminLayout.addWidget(self.sminLabel) self.sminLayout.addWidget(self.sminValue) self.sminLayout.addWidget(self.sminSlider) ''' Vertical Layout for SMAX Slider''' self.smaxLayout = QVBoxLayout() self.smaxLayout.setObjectName("smaxLayout") self.smaxLabel = QLabel("SMax") self.smaxValue = QLabel("1") self.smaxValue.setAlignment(Qt.AlignCenter) self.smaxSlider = QSlider(Qt.Vertical) self.smaxSlider.setMinimum(smin) self.smaxSlider.setMaximum(smax) self.smaxSlider.setValue(smax) self.smaxLayout.addWidget(self.smaxLabel) self.smaxLayout.addWidget(self.smaxValue) self.smaxLayout.addWidget(self.smaxSlider) ''' Vertical Layout for VMIN Slider''' self.vminLayout = QVBoxLayout() self.vminLayout.setObjectName("vminLayout") self.vminLabel = QLabel("VMin") self.vminValue = QLabel("0") self.vminValue.setAlignment(Qt.AlignCenter) self.vminSlider = QSlider(Qt.Vertical) self.vminSlider.setMinimum(vmin) self.vminSlider.setMaximum(vmax) self.vminSlider.setValue(vmin) self.vminLayout.addWidget(self.vminLabel) self.vminLayout.addWidget(self.vminValue) self.vminLayout.addWidget(self.vminSlider) ''' Vertical Layout for VMAX Slider''' self.vmaxLayout = QVBoxLayout() self.vmaxLayout.setObjectName("vmaxLayout") self.vmaxLabel = QLabel("VMax") self.vmaxValue = QLabel("255") self.vmaxValue.setAlignment(Qt.AlignCenter) self.vmaxSlider = QSlider(Qt.Vertical) self.vmaxSlider.setMinimum(vmin) self.vmaxSlider.setMaximum(vmax) self.vmaxSlider.setValue(vmax) self.vmaxLayout.addWidget(self.vmaxLabel) self.vmaxLayout.addWidget(self.vmaxValue) self.vmaxLayout.addWidget(self.vmaxSlider) '''Adding all the vertical layouts to the main horizontal layout''' self.hLayout.addLayout(self.radioLayout) self.hLayout.addLayout(self.hminLayout) self.hLayout.addLayout(self.hmaxLayout) self.hLayout.addLayout(self.sminLayout) self.hLayout.addLayout(self.smaxLayout) self.hLayout.addLayout(self.vminLayout) self.hLayout.addLayout(self.vmaxLayout) self.setLayout(self.hLayout) '''Signals for sliders value changes''' self.hminSlider.valueChanged.connect(self.changeHmin) self.hmaxSlider.valueChanged.connect(self.changeHmax) self.sminSlider.valueChanged.connect(self.changeSmin) self.smaxSlider.valueChanged.connect(self.changeSmax) self.vminSlider.valueChanged.connect(self.changeVmin) self.vmaxSlider.valueChanged.connect(self.changeVmax)
def init_Button(self): #开始结束按钮 self.state_start_end = 0 self.pushButton = QPushButton() self.pushButton.setStyleSheet("background:transparent;") self.pushButton.setText("") icon = QIcon() icon.addPixmap(QPixmap(":/start/start.png")) self.pushButton.setIcon(icon) self.pushButton.setIconSize(QSize(30, 30)) self.pushButton.setCheckable(True) self.pushButton.setFlat(True) self.pushButton.setObjectName("开始/结束") self.pushButton.clicked.connect(self.start_end) #暂停继续按钮 self.state_continue_stop = 0 self.pushButton_2 = QPushButton() self.pushButton_2.setStyleSheet("background:transparent;") self.pushButton_2.setText("") icon1 = QIcon() icon1.addPixmap(QPixmap(":/on/stop.png")) self.pushButton_2.setIcon(icon1) self.pushButton_2.setIconSize(QSize(30, 30)) self.pushButton_2.setCheckable(True) self.pushButton_2.setFlat(True) self.pushButton_2.setObjectName("pushButton_2") self.pushButton_2.clicked.connect(self.continue_stop) #数据分析按钮 self.toolButton = QToolButton() self.toolButton.setLayoutDirection(Qt.LeftToRight) self.toolButton.setStyleSheet("background:transparent;") icon2 = QIcon() icon2.addPixmap(QPixmap(":/analytics/analytics.png"), QIcon.Normal, QIcon.Off) self.toolButton.setIcon(icon2) self.toolButton.setIconSize(QSize(30, 30)) self.toolButton.setAutoRaise(True) self.toolButton.setObjectName("toolButton") self.toolButton.clicked.connect(self.analyze) #声音播放静音按钮 self.sound_state = 0 self.pushButton_4 = QPushButton() self.pushButton_4.setStyleSheet("background:transparent;") self.pushButton_4.setText("") icon3 = QIcon() icon3.addPixmap(QPixmap(":/sound/sound.png"), QIcon.Normal, QIcon.Off) icon3.addPixmap(QPixmap(":/sound_off/Sound_off.png"), QIcon.Normal, QIcon.On) self.pushButton_4.setIcon(icon3) self.pushButton_4.setIconSize(QSize(30, 30)) self.pushButton_4.setCheckable(True) self.pushButton_4.setFlat(True) self.pushButton_4.setObjectName("pushButton_4") self.pushButton_4.clicked.connect(self.sound_renew) #self.pushButton_4.rclicked.connect(self.sound_renew()) #声音大小调节按钮 self.splider = QSlider(Qt.Horizontal) self.splider.valueChanged.connect(self.valChange) self.splider.setMinimum(0) self.splider.setMaximum(100) self.splider.setSingleStep(1) self.splider.setTickInterval(1) self.splider.setValue(100) #布局 hbox = QHBoxLayout() vbox = QVBoxLayout() hbox.addWidget(self.pushButton) hbox.addWidget(self.pushButton_2) hbox.addWidget(self.toolButton) hbox.addWidget(self.pushButton_4) hbox.addWidget(self.splider) hbox.addStretch(1) vbox.addStretch(1) vbox.addLayout(hbox) main_frame = QWidget() main_frame.setLayout(vbox) self.setCentralWidget(main_frame)