def __init__(self, sms_data, *args, **kwargs): super(EditSMSLink, self).__init__(*args, **kwargs) layout = QVBoxLayout(margin=0) print(sms_data) self.sms_id = sms_data['id'] # 时间布局 date_time_layout = QHBoxLayout() self.date_edit = QDateEdit(QDate.fromString(sms_data['date'], 'yyyy-MM-dd')) self.date_edit.setCalendarPopup(True) self.date_edit.setDisplayFormat('yyyy-MM-dd') date_time_layout.addWidget(QLabel('日期:')) date_time_layout.addWidget(self.date_edit) date_time_layout.addWidget(QLabel('时间:')) self.time_edit = QTimeEdit(QTime.fromString(sms_data['time'], 'HH:mm:ss')) self.time_edit.setDisplayFormat('HH:mm:ss') date_time_layout.addWidget(self.time_edit) date_time_layout.addStretch() layout.addLayout(date_time_layout) self.show_tips = QLabel() self.text_edit = QTextEdit(textChanged=self.set_show_tips_null) self.text_edit.setPlainText(sms_data['content']) layout.addWidget(self.text_edit) layout.addWidget(self.show_tips) layout.addWidget(QPushButton('确定', clicked=self.commit_sms_edited), alignment=Qt.AlignRight) self.setLayout(layout) self.resize(420, 240) self.setWindowTitle('编辑短信通')
def createSearch(self): self.formGroupBox = QGroupBox("Search Form") self.formGroupBox1 = QGroupBox() layout = QFormLayout() self.fromText1 = QLineEdit() self.toText1 = QLineEdit() layout.addRow(QLabel("From:"), self.fromText1) layout.addRow(QLabel("To:"), self.toText1) defaultDate = QDate.currentDate().toPyDate() self.deptDate1 = QDateEdit(QDate(defaultDate.year, defaultDate.month, defaultDate.day)) self.arrDate1 = QDateEdit(QDate(defaultDate.year, defaultDate.month, defaultDate.day)) layout.addRow(QLabel("Departure Date:"), self.deptDate1) layout.addRow(QLabel("Arrival Date:"), self.arrDate1) defaultTime = QTime.currentTime().toPyTime() self.deptTime1 = QTimeEdit(QTime(defaultTime.hour, defaultTime.minute, defaultTime.second)) self.arrTime2 = QTimeEdit(QTime(defaultTime.hour, defaultTime.minute, defaultTime.second)) layout.addRow(QLabel("Departure Time:"), self.deptTime1) layout.addRow(QLabel("Arrival Time:"), self.arrTime2) self.formGroupBox.setLayout(layout)
def createLayout(self): """Create widget to control the countdown browser source.""" layout = QGridLayout() self.rb_static = QRadioButton(_("Static Countdown to date:"), self) layout.addWidget(self.rb_static, 0, 0) self.rb_dynamic = QRadioButton(_("Dynamic Countdown duration:"), self) self.rb_dynamic.setChecked(True) self.rb_dynamic.toggled.connect(self.toggleRadio) layout.addWidget(self.rb_dynamic, 1, 0) self.te_datetime = QDateTimeEdit() self.te_datetime.setCalendarPopup(True) self.te_datetime.setContextMenuPolicy(Qt.CustomContextMenu) self.te_datetime.customContextMenuRequested.connect( self.openDateTimeMenu) layout.addWidget(self.te_datetime, 0, 1) self.te_duration = QTimeEdit() self.te_duration.setDisplayFormat("HH 'h' mm 'm' ss 's'") self.te_duration.setContextMenuPolicy(Qt.CustomContextMenu) self.te_duration.customContextMenuRequested.connect( self.openDurationMenu) layout.addWidget(self.te_duration, 1, 1) self.event_label = QLabel(' ' + _('Event description:')) layout.addWidget(self.event_label, 0, 2) self.le_desc = QLineEdit() self.le_desc.setAlignment(Qt.AlignCenter) layout.addWidget(self.le_desc, 0, 3, 1, 2) self.cb_restart = QCheckBox( _('Restart countdown when source becomes active')) layout.addWidget(self.cb_restart, 1, 2, 1, 2) self.pb_start = QPushButton(" " + _('Start Countdown') + " ") layout.addWidget(self.pb_start, 1, 4) layout.setColumnStretch(2, 1) layout.setColumnStretch(3, 2) self.setLayout(layout)
def __init__(self, parent=None): QWidget.__init__(self, parent) self.time_label = QLabel("Время начала", self) self.time_edit = QTimeEdit() self.date_label = QLabel("Дата", parent=self) self.date_edit = QDateEdit(calendarPopup=True) self.subjects_label = QLabel("Темы", self) self.subjects_list = QListWidget(self) layout = QVBoxLayout() layout.addWidget(self.time_label) layout.addWidget(self.time_edit) layout.addWidget(self.date_label) layout.addWidget(self.date_edit) layout.addWidget(self.subjects_label) layout.addWidget(self.subjects_list) self.ok_btn = QPushButton('OK', parent=self) self.ok_btn.clicked.connect(self.ok) self.ok_cancel = QPushButton('Cancel', parent=self) self.ok_cancel.clicked.connect(self.cancel) btn_layout = QHBoxLayout() btn_layout.addWidget(self.ok_btn) btn_layout.addWidget(self.ok_cancel) layout.addLayout(btn_layout) layout.addStretch(0) self.setLayout(layout) self.presenter = StudyingPresenter(self)
def createFormFields(self): self.frmFieldProgram = QLineEdit(self.centralwidget) self.frmLayout.addRow("Program:", self.frmFieldProgram) self.frmComboStation = QComboBox(self.centralwidget) self.frmLayout.addRow("Station:", self.frmComboStation) self.frmComboFreq = QComboBox(self.centralwidget) self.frmLayout.addRow("Station Frequency:", self.frmComboFreq) self.frmComboMode = QComboBox(self.centralwidget) self.frmLayout.addRow("Modulation Mode:", self.frmComboMode) self.frmComboBandwidth = QComboBox(self.centralwidget) self.frmLayout.addRow("Bandwidth:", self.frmComboBandwidth) self.frmComboModem = QComboBox(self.centralwidget) self.frmLayout.addRow("Modem:", self.frmComboModem) self.frmComboCenterFreq = QComboBox(self.centralwidget) self.frmLayout.addRow("Center Frequency:", self.frmComboCenterFreq) #Day of Week = DOW self.frmComboDOW = QComboBox(self.centralwidget) self.frmLayout.addRow("UTC Day of Week:", self.frmComboDOW) self.frmUTCTimeEdit = QTimeEdit(self.centralwidget) self.frmLayout.addRow("UTC Time:", self.frmUTCTimeEdit) self.frmUTCTimeEdit.setDisplayFormat('hh:mm') utctime = QTime.fromString('00:00', 'hh:mm') self.frmUTCTimeEdit.setTime(utctime) self.frmCheckBoxActive = QCheckBox(self.centralwidget) self.frmCheckBoxActive.setChecked(True) self.frmLayout.addRow("Active:", self.frmCheckBoxActive) self.frmTextEditNotes = QTextEdit(self.centralwidget) self.frmLayout.addRow("Notes:", self.frmTextEditNotes)
def createedits(self): str_select_fio = """ select FIO from driver; """ str_select_route = """ select no_route from route; """ str_select_type = """ select type_t from type_transport; """ self.driver_edit = QComboBox() self.route_edit = QComboBox() self.transport_edit = QComboBox() self.selects_for_combobox(self.driver_edit, str_select_fio) self.selects_for_combobox(self.route_edit, str_select_route) self.selects_for_combobox(self.transport_edit, str_select_type) self.arivaltime_edit = QTimeEdit() self.departuretime_edit = QTimeEdit() self.date_edit = QDateEdit() self.edit_list = (self.route_edit, self.transport_edit, self.driver_edit, self.arivaltime_edit, self.departuretime_edit, self.date_edit) i = 0 for item in self.edit_list: self.grid_layout.addWidget(self.edit_list[i], 2, i) i += 1
def __init__(self, parent=None): """Initialize the TimeSynchronizer instance.""" super().__init__(parent=parent) self.instruction_label = QLabel('Adjust desired synchronization time and press ' '"Sync" button to set reference clock time.') self.instruction_label.setWordWrap(True) self.time_timeedit = QTimeEdit() self.time_timeedit.setDisplayFormat(defaults.DATETIME_FORMAT) font = self.time_timeedit.font() font.setPointSize(self.TIME_POINT_SIZE) self.time_timeedit.setFont(font) self.sync_button = QPushButton('Sync') font = self.sync_button.font() font.setPointSize(self.BUTTON_POINT_SIZE) self.sync_button.setFont(font) self.setLayout(QVBoxLayout()) self.layout().addWidget(self.instruction_label) self.layout().addWidget(self.time_timeedit) self.layout().addWidget(self.sync_button) self.sync_button.clicked.connect(self.handle_clicked)
def __init__(self, time_list: TimeList, index=-1): self.parent_time_list = time_list self.current_index = index # setup UI self.time_selection = QTimeEdit() self.temp_selection = QSpinBox() self.pb_minus = QPushButton() self.pb_plus = QPushButton() height = 40 # set max height self.time_selection.setMaximumHeight(height) self.temp_selection.setMaximumHeight(height) self.pb_minus.setMaximumHeight(height) self.pb_plus.setMaximumHeight(height) # set min height self.time_selection.setMinimumHeight(height) self.temp_selection.setMinimumHeight(height) self.pb_minus.setMinimumHeight(height) self.pb_plus.setMinimumHeight(height) # set pb width self.pb_minus.setMaximumWidth(height) self.pb_plus.setMaximumWidth(height) # add elements self.addWidget(self.time_selection) self.addWidget(self.temp_selection) self.addWidget(self.pb_plus) self.addWidget(self.pb_minus)
def tab_1(self): # main layout layout = QVBoxLayout() task_name = QLabel('Task Name') due_date = QLabel('Due Date') due_time = QLabel('Due Time') if (self.button_name == "Add"): self.task_name_input = QLineEdit() self.due_date_input = QDateEdit() self.due_date_input.setMinimumDate(QDate.currentDate()) self.due_time_input = QTimeEdit() else: task_info = user_tasks.get_task(self.identifier) self.task_name_input = QLineEdit(task_info[1]) self.due_date_input = QDateEdit(task_info[2].date()) self.due_date_input.setMinimumDate(QDate.currentDate()) self.due_time_input = QTimeEdit(task_info[2].time()) layout.addWidget(task_name) layout.addWidget(self.task_name_input) layout.addWidget(due_date) layout.addWidget(self.due_date_input) layout.addWidget(due_time) layout.addWidget(self.due_time_input) layout.addSpacing(20) self.tabs.tab_1.setLayout(layout)
class QTimeInputDialog(QDialog): def __init__(self, title='', description='', initial=QtCore.QTime(), minValue=QtCore.QTime(), maxValue=QtCore.QTime(), dformat='mm.ss', parent=None): super().__init__(parent) self.setWindowTitle(title) self.setWindowModality(QtCore.Qt.ApplicationModal) self.setMaximumSize(300, 110) self.setMinimumSize(300, 110) self.resize(300, 130) self.label = QLabel(description, self) self.label.setGeometry(10, 0, 280, 20) self.label.setAlignment(QtCore.Qt.AlignCenter) self.time = QTimeEdit(self) self.time.setDisplayFormat(dformat) self.time.setMaximumTime(maxValue) self.time.setMinimumTime(minValue) self.time.setTime(initial) self.time.setGeometry(10, 30, 280, 25) self.acceptButton = QPushButton(self) self.acceptButton.setGeometry(QtCore.QRect(180, 80, 100, 25)) self.acceptButton.setText("Ok") self.rejectButton = QPushButton(self) self.rejectButton.setGeometry(QtCore.QRect(60, 80, 100, 25)) self.rejectButton.setText("Cancel") self.rejectButton.clicked.connect(self.reject) self.acceptButton.clicked.connect(self.accept)
def layoutOne(self): QWidget().setLayout(self.layout()) checkBtn = QCheckBox("Return") self.formGroupBox = QGroupBox("Search Form") self.formGroupBox1 = QGroupBox() layout = QFormLayout() self.fromText1 = QLineEdit() self.toText1 = QLineEdit() defaultDate = QDate.currentDate().toPyDate() layout.addRow(QLabel("From:"), self.fromText1) layout.addRow(QLabel("To:"), self.toText1) self.deptDate1 = QDateEdit(QDate(defaultDate.year, defaultDate.month, defaultDate.day)) self.arrDate1 = QDateEdit(QDate(defaultDate.year, defaultDate.month, defaultDate.day)) layout.addRow(QLabel("Departure Date:"), self.deptDate1) layout.addRow(QLabel("Arrival Date:"), self.arrDate1) defaultTime = QTime.currentTime().toPyTime() self.deptTime1 = QTimeEdit(QTime(defaultTime.hour, defaultTime.minute, defaultTime.second)) self.arrTime2 = QTimeEdit(QTime(defaultTime.hour, defaultTime.minute, defaultTime.second)) layout.addRow(QLabel("Departure Time:"), self.deptTime1) layout.addRow(QLabel("Arrival Time:"), self.arrTime2) self.formGroupBox.setLayout(layout) checkBtn.stateChanged.connect(self.transform)
def __init__(self, **kwargs): super().__init__(**kwargs) self.setLayout(QVBoxLayout()) self.layout().setAlignment(QtCore.Qt.AlignTop) self.cue_id = -1 self.cueDialog = CueSelectDialog( cues=Application().cue_model.filter(MediaCue), parent=self) self.cueGroup = QGroupBox(self) self.cueGroup.setLayout(QVBoxLayout()) self.layout().addWidget(self.cueGroup) self.cueButton = QPushButton(self.cueGroup) self.cueButton.clicked.connect(self.select_cue) self.cueGroup.layout().addWidget(self.cueButton) self.cueLabel = QLabel(self.cueGroup) self.cueLabel.setAlignment(QtCore.Qt.AlignCenter) self.cueGroup.layout().addWidget(self.cueLabel) self.seekGroup = QGroupBox(self) self.seekGroup.setLayout(QHBoxLayout()) self.layout().addWidget(self.seekGroup) self.seekEdit = QTimeEdit(self.seekGroup) self.seekEdit.setDisplayFormat('HH.mm.ss.zzz') self.seekGroup.layout().addWidget(self.seekEdit) self.seekLabel = QLabel(self.seekGroup) self.seekLabel.setAlignment(QtCore.Qt.AlignCenter) self.seekGroup.layout().addWidget(self.seekLabel) self.retranslateUi()
def __init__(self): super(Demo, self).__init__() self.datetime_1 = QDateTimeEdit(self) # 1 self.datetime_1.dateChanged.connect(lambda: print('Date Changed!')) self.datetime_2 = QDateTimeEdit(QDateTime.currentDateTime(), self) # 2 self.datetime_2.setDisplayFormat('yyyy-MM-dd HH:mm:ss') self.datetime_2.timeChanged.connect(lambda: print('Time Changed!')) print(self.datetime_2.date()) print(self.datetime_2.time()) print(self.datetime_2.dateTime()) self.datetime_3 = QDateTimeEdit(QDateTime.currentDateTime(), self) # 3 self.datetime_3.dateTimeChanged.connect(lambda: print('DateTimeChanged!')) self.datetime_3.setCalendarPopup(True) self.datetime_4 = QDateTimeEdit(QDate.currentDate(), self) # 4 self.datetime_5 = QDateTimeEdit(QTime.currentTime(), self) self.date = QDateEdit(QDate.currentDate(), self) # 5 self.date.setDisplayFormat('yyyy/MM/dd') print(self.date.date()) self.time = QTimeEdit(QTime.currentTime(), self) # 6 self.time.setDisplayFormat('HH:mm:ss') print(self.time.time()) self.v_layout = QVBoxLayout() self.v_layout.addWidget(self.datetime_1) self.v_layout.addWidget(self.datetime_2) self.v_layout.addWidget(self.datetime_3) self.v_layout.addWidget(self.datetime_4) self.v_layout.addWidget(self.datetime_5) self.v_layout.addWidget(self.date) self.v_layout.addWidget(self.time) self.setLayout(self.v_layout)
def init_ui(self, alert): """Initialization helper method. Attributes: alert: The :class:`~_clockalarm.SimpleAlert` to edit """ group_box = QGroupBox(self) group_box.setTitle('Set up a new Simple Alert') date_time = time.time() + 15 self.periodicity_edit = QTimeEdit() self.periodicity_edit.setDisplayFormat("HH:mm:ss") self.date_time_edit = QDateTimeEdit( QDateTime.fromSecsSinceEpoch(date_time)) self.alert_message_edit = QLineEdit() self.font_family_edit = QLineEdit() self.font_size_edit = QSpinBox() self.font_size_edit.setMaximum(64) self.font_size_edit.setSingleStep(2) self.color_edit = ColorSelectorWidget() self.sound_edit = SoundSelectorWidget() self.accept_button = QPushButton('Validate') if alert: group_box.setTitle('Edit a Simple Alert') self.alert_message_edit.setText( alert.get_notification().get_message()) self.date_time_edit.setDateTime( QDateTime.fromSecsSinceEpoch(alert.trigger_time)) if alert.periodicity is not None: self.periodicity_edit.setTime( QTime(0, 0).addSecs(alert.periodicity)) if alert.notification.font_family is not None: self.font_family_edit.setText(alert.notification.font_family) if alert.notification.font_size is not None: self.font_size_edit.setValue(alert.notification.font_size) if alert.notification.color_hex is not None: self.color_edit.set_hex_color(alert.notification.color_hex) if alert.notification.sound is not None: self.sound_edit.set_sound(alert.notification.sound) grid_layout = QGridLayout(group_box) grid_layout.addWidget(QLabel('Message'), 1, 1) grid_layout.addWidget(self.alert_message_edit, 1, 2) grid_layout.addWidget(QLabel('Date and Time'), 2, 1) grid_layout.addWidget(self.date_time_edit, 2, 2) grid_layout.addWidget(QLabel('Periodicity'), 3, 1) grid_layout.addWidget(self.periodicity_edit, 3, 2) grid_layout.addWidget(QLabel('Font'), 4, 1) grid_layout.addWidget(self.font_family_edit, 4, 2) grid_layout.addWidget(self.font_size_edit, 4, 3) grid_layout.addWidget(QLabel('Text color'), 5, 1) grid_layout.addWidget(self.color_edit, 5, 2) grid_layout.addWidget(QLabel('Notification sound'), 6, 1) grid_layout.addWidget(self.sound_edit, 6, 2) grid_layout.addWidget(self.accept_button, 7, 3) group_box.setLayout(grid_layout) group_box.adjustSize()
def set_layout(self): # Set up basic Stuff here vbox = QVBoxLayout() group1 = QGroupBox("Employee") form1 = QFormLayout() group1.setLayout(form1) self.namelabel = QLabel("Name") self.nameLineEdit = QLineEdit("") self.nameLineEdit.setPlaceholderText("Enter Employee Name") form1.setWidget(0, QFormLayout.LabelRole, self.namelabel) form1.setWidget(0, QFormLayout.FieldRole, self.nameLineEdit) datelabel = QLabel("Date Started") self.dateLineEdit = QDateEdit() self.dateLineEdit.setDate(QDate(2021, 1, 1)) self.dateLineEdit.setCalendarPopup(True) form1.setWidget(1, QFormLayout.LabelRole, datelabel) form1.setWidget(1, QFormLayout.FieldRole, self.dateLineEdit) self.timestartlabel = QLabel("Time Started") self.timestartLineEdit = QTimeEdit() self.timestartLineEdit.setTime(QTime(7, 0, 0)) # Set time constrain self.timestartLineEdit.timeChanged.connect(self.connect_start_end) form1.setWidget(2, QFormLayout.LabelRole, self.timestartlabel) form1.setWidget(2, QFormLayout.FieldRole, self.timestartLineEdit) timeendedlabel = QLabel("Time Ended") self.timeendeLineEdit = QTimeEdit() self.timeendeLineEdit.setTime(QTime(self.timestartLineEdit.time())) # connect min time of endtime as starttime self.timeendeLineEdit.timeChanged.connect( self.set_min_time) # you can use lambda function to get 1 line form1.setWidget(3, QFormLayout.LabelRole, timeendedlabel) form1.setWidget(3, QFormLayout.FieldRole, self.timeendeLineEdit) ##Group 2 (Employer) group2 = QGroupBox("Employer") form2 = QFormLayout() group2.setLayout(form2) # Add items to form amountlabel = QLabel("Amount Paid Per Hour") self.amountLine = QLineEdit("$5.00") self.amountLine.setEnabled(False) form2.setWidget(0, QFormLayout.LabelRole, amountlabel) form2.setWidget(0, QFormLayout.FieldRole, self.amountLine) ##ADD BUTTON self.addbtn = QPushButton("Add Emmployee") self.addbtn.clicked.connect(self.saved_messagebox) ## ADD ITEMS TO LAYOUT vbox.addWidget(group1) vbox.addWidget(group2) vbox.addWidget(self.addbtn, 0, Qt.AlignHCenter) self.setLayout(vbox)
def init_timedit(self): self.time = QTime() self.tedit = QTimeEdit(self) if not self.update: self._timeval = self.time.currentTime() else: self._timeval = QtCore.QTime.fromString(self._timeval, 'HH:mm:ss') self.tedit.setTime(self._timeval) self.tedit.move(5, 260)
class EditSMSLink(QDialog): def __init__(self, sms_data, *args, **kwargs): super(EditSMSLink, self).__init__(*args, **kwargs) layout = QVBoxLayout(margin=0) print(sms_data) self.sms_id = sms_data['id'] # 时间布局 date_time_layout = QHBoxLayout() self.date_edit = QDateEdit(QDate.fromString(sms_data['date'], 'yyyy-MM-dd')) self.date_edit.setCalendarPopup(True) self.date_edit.setDisplayFormat('yyyy-MM-dd') date_time_layout.addWidget(QLabel('日期:')) date_time_layout.addWidget(self.date_edit) date_time_layout.addWidget(QLabel('时间:')) self.time_edit = QTimeEdit(QTime.fromString(sms_data['time'], 'HH:mm:ss')) self.time_edit.setDisplayFormat('HH:mm:ss') date_time_layout.addWidget(self.time_edit) date_time_layout.addStretch() layout.addLayout(date_time_layout) self.show_tips = QLabel() self.text_edit = QTextEdit(textChanged=self.set_show_tips_null) self.text_edit.setPlainText(sms_data['content']) layout.addWidget(self.text_edit) layout.addWidget(self.show_tips) layout.addWidget(QPushButton('确定', clicked=self.commit_sms_edited), alignment=Qt.AlignRight) self.setLayout(layout) self.resize(420, 240) self.setWindowTitle('编辑短信通') def set_show_tips_null(self): self.show_tips.setText('') # 确定提交修改 def commit_sms_edited(self): text = self.text_edit.toPlainText().strip(' ') if not text: self.show_tips.setText('请输入内容。') return # 提交 try: r = requests.put( url=settings.SERVER_ADDR + 'info/sms/' + str(self.sms_id) + '/?mc=' + settings.app_dawn.value('machine'), headers={'AUTHORIZATION': settings.app_dawn.value('AUTHORIZATION')}, data=json.dumps({ 'date': self.date_edit.text(), 'time': self.time_edit.text(), 'content': text }) ) response = json.loads(r.content.decode('utf-8')) if r.status_code != 201: raise ValueError(response['message']) except Exception as e: QMessageBox.information(self, '错误', str(e)) else: QMessageBox.information(self,'成功', '修改成功!') self.close()
def __init__(self): QWidget.__init__(self) # Set Time One Group self.time_one_calendar = QCalendarWidget() self.time_one_country_combobox = QComboBox() self.time_one_vbox = QVBoxLayout() self.time_one_groupbox = QGroupBox("Time One") self.time_one_bottom_hbox = QHBoxLayout() self.time_one_time_edit = QTimeEdit() self.time_one_default_button = QPushButton() self.time_one_default_button.setIcon(QIcon("%s/gnome-set-time.png" % icon_path)) self.time_one_default_button.setMaximumSize(50, 50) self.time_one_bottom_hbox.addWidget(self.time_one_time_edit) self.time_one_bottom_hbox.addWidget(self.time_one_default_button) self.time_one_vbox.addWidget(self.time_one_country_combobox) self.time_one_vbox.addWidget(self.time_one_calendar) self.time_one_vbox.addLayout(self.time_one_bottom_hbox) self.time_one_groupbox.setLayout(self.time_one_vbox) # Set Time Two Group self.time_two_groupbox = QGroupBox("Time Two") self.time_two_calendar = QCalendarWidget() self.time_two_vbox = QVBoxLayout() self.time_two_country_combobox = QComboBox() self.time_two_bottom_hbox = QHBoxLayout() self.time_two_time_edit = QTimeEdit() self.time_two_default_button = QPushButton() self.time_two_default_button.setIcon(QIcon("%s/gnome-set-time.png" % icon_path)) self.time_two_default_button.setMaximumSize(50, 50) self.time_two_bottom_hbox.addWidget(self.time_two_time_edit) self.time_two_bottom_hbox.addWidget(self.time_two_default_button) self.time_two_vbox.addWidget(self.time_two_country_combobox) self.time_two_vbox.addWidget(self.time_two_calendar) self.time_two_vbox.addLayout(self.time_two_bottom_hbox) self.time_two_groupbox.setLayout(self.time_two_vbox) # Set main layout self.main_layout = QHBoxLayout() self.main_layout.addWidget(self.time_one_groupbox) self.main_layout.addWidget(self.time_two_groupbox) self.setLayout(self.main_layout) # Wire-up your widgets! self.time_one_connect() self.time_two_connect() self.time_one_default_button.clicked.connect(self.set_local_time_one) self.time_two_default_button.clicked.connect(self.set_local_time_two) # Set the local time for time one self.set_local_country() self.set_local_time_one() # Finally, convert the second time based on the first self.convert_timeone_to_timetwo()
def get_widget_from_ranking(ranking): assert isinstance(ranking, RankingItem) qual = ranking.qual.name qual_checkbox = QCheckBox(ranking.qual.get_title()) qual_checkbox.setFixedWidth(50) qual_checkbox.setObjectName(qual + '_checkbox') type_combo = AdvComboBox() type_combo.addItems({_('Rank'), _('Max place'), _('Result time')}) type_combo.setFixedWidth(150) type_combo.setObjectName(qual + '_combo') max_place = QSpinBox() max_place.setValue(0) max_place.setFixedWidth(70) max_place.setObjectName(qual + '_place') max_time = QTimeEdit() max_time.setFixedWidth(70) max_time.setDisplayFormat("hh:mm:ss") max_time.setObjectName(qual + '_time') def select_type(): text = type_combo.currentText() max_place.setVisible(text == _('Max place')) max_time.setVisible(text == _('Result time')) def set_enabled(): flag = qual_checkbox.isChecked() type_combo.setEnabled(flag) max_place.setEnabled(flag) max_time.setEnabled(flag) type_combo.currentIndexChanged.connect(select_type) qual_checkbox.stateChanged.connect(set_enabled) if ranking.use_scores: type_combo.setCurrentText(_('Rank')) elif ranking.max_place: type_combo.setCurrentText(_('Max place')) max_place.setValue(ranking.max_place) else: type_combo.setCurrentText(_('Result time')) max_time.setTime(time_to_qtime(ranking.max_time)) qual_checkbox.setChecked(ranking.is_active) select_type() set_enabled() layout = QHBoxLayout() layout.addWidget(qual_checkbox) layout.addWidget(type_combo) layout.addWidget(max_place) layout.addWidget(max_time) return layout
class ClassTimePicker(QWidget): def __init__(self, parent=None): super(ClassTimePicker, self).__init__(parent=parent) self.time_selector = QTimeEdit() self.time_selector.sizePolicy().setRetainSizeWhenHidden(False) self.time_selector.setDisplayFormat("hh:mm AP") self.time_selector.setTime(QTime(12, 0, 0)) self.day_picker = DayPicker() self.day_picker.sizePolicy().setRetainSizeWhenHidden(False) self.layout = QHBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.layout.addWidget(self.time_selector) self.layout.addWidget(self.day_picker) self.setLayout(self.layout) def get_time(self): return self.time_selector.time() def set_time(self, time: QTime): self.time_selector.setTime(time) def set_day(self, day): for b in self.day_picker.buttons: if b.text() == day: b.click() def is_valid(self): return self.day_picker.get_day() is not None
class CreateNewTradePolicyPopup(QDialog): def __init__(self, *args, **kwargs): super(CreateNewTradePolicyPopup, self).__init__(*args, **kwargs) layout = QVBoxLayout(margin=0) # 时间布局 date_time_layout = QHBoxLayout() self.date_edit = QDateEdit(QDate.currentDate()) self.date_edit.setCalendarPopup(True) self.date_edit.setDisplayFormat('yyyy-MM-dd') date_time_layout.addWidget(QLabel('日期:')) date_time_layout.addWidget(self.date_edit) date_time_layout.addWidget(QLabel('时间:')) self.time_edit = QTimeEdit(QTime.currentTime()) self.time_edit.setDisplayFormat('HH:mm:ss') date_time_layout.addWidget(self.time_edit) date_time_layout.addStretch() layout.addLayout(date_time_layout) self.text_edit = QTextEdit(textChanged=self.set_show_tips_null) layout.addWidget(self.text_edit) self.show_tips = QLabel() layout.addWidget(self.show_tips) layout.addWidget(QPushButton('确定', clicked=self.commit_trade_policy), alignment=Qt.AlignRight) self.setLayout(layout) self.resize(400, 200) self.setWindowTitle('新建短信通') def set_show_tips_null(self): self.show_tips.setText('') # 确定增加 def commit_trade_policy(self): text = self.text_edit.toPlainText().strip(' ') if not text: self.show_tips.setText('请输入内容。') return # 提交 try: r = requests.post( url=settings.SERVER_ADDR + 'info/trade-policy/?mc=' + settings.app_dawn.value('machine'), headers={'AUTHORIZATION': settings.app_dawn.value('AUTHORIZATION')}, data=json.dumps({ 'date': self.date_edit.text(), 'time': self.time_edit.text(), 'content': text }) ) response = json.loads(r.content.decode('utf-8')) if r.status_code != 201: raise ValueError(response['message']) except Exception as e: self.show_tips.setText(str(e)) else: self.show_tips.setText(response['message'])
def createEditor(self, parent, option, index): editor = QTimeEdit(parent=parent) editor.setMinimumTime(datetime.time(hour=8, minute=30, second=30)) editor.setMaximumTime(datetime.time(hour=23, minute=30, second=30)) editor.setDisplayFormat("HH:mm:ss") # setFrame(): tell whether the line edit draws itself with a frame. # If enabled (the default) the line edit draws itself inside a frame, otherwise the line edit draws itself without any frame. editor.setFrame(False) return editor
def __init__(self, value, lst_base_date, parent=None): super().__init__(parent) layout = QHBoxLayout(self) self.lst_base_date = lst_base_date # offset to lst base edit self.days = QSpinBox(self) self.days.setMinimum(-10) # somewhat arbitrary value self.days.setValue((value.date() - lst_base_date).days) layout.addWidget(self.days) self.time = QTimeEdit(self) self.time.setDisplayFormat("hh:mm:ss") self.time.setTime(value.time()) layout.addWidget(self.time)
def __init__(self, parent=None): super(Downtime, self).__init__(parent) self.setWindowTitle('Request a Downtime') self.setWindowFlags(Qt.FramelessWindowHint) self.setStyleSheet(get_css()) self.setWindowIcon(QIcon(get_image_path('icon'))) self.setMinimumSize(360, 460) # Fields self.fixed = True self.duration = QTimeEdit() self.start_time = QDateTimeEdit() self.end_time = QDateTimeEdit() self.comment_edit = QTextEdit()
class CreateNewSMSLink(QDialog): def __init__(self, *args, **kwargs): super(CreateNewSMSLink, self).__init__(*args, **kwargs) self.setAttribute(Qt.WA_DeleteOnClose) layout = QVBoxLayout() # 时间布局 date_time_layout = QHBoxLayout() self.date_edit = QDateEdit(QDate.currentDate()) self.date_edit.setCalendarPopup(True) self.date_edit.setDisplayFormat('yyyy-MM-dd') date_time_layout.addWidget(QLabel('日期:')) date_time_layout.addWidget(self.date_edit) date_time_layout.addWidget(QLabel('时间:')) self.time_edit = QTimeEdit(QTime.currentTime()) self.time_edit.setDisplayFormat('HH:mm:ss') date_time_layout.addWidget(self.time_edit) date_time_layout.addStretch() layout.addLayout(date_time_layout) self.text_edit = QTextEdit() layout.addWidget(self.text_edit) layout.addWidget(QPushButton('确定', clicked=self.commit_sms), alignment=Qt.AlignRight) self.setLayout(layout) self.setFixedSize(400, 200) self.setWindowTitle('新建短信通') # 确定增加 def commit_sms(self): text = self.text_edit.toPlainText().strip() if not text: QMessageBox.information(self,'错误', '请输入内容。') return # 提交 try: r = requests.post( url=settings.SERVER_ADDR + 'advise/shortmessage/', headers={'Content-Type': 'application/json;charset=utf8'}, data=json.dumps({ 'utoken':settings.app_dawn.value('AUTHORIZATION'), 'custom_time': self.date_edit.text() + ' ' + self.time_edit.text(), 'content': text }) ) response = json.loads(r.content.decode('utf-8')) if r.status_code != 201: raise ValueError(response['message']) except Exception as e: QMessageBox.information(self,'错误', str(e)) else: QMessageBox.information(self,'成功', "新增成功") self.close()
class StartTimeChangeDialog(QDialog): def __init__(self): super().__init__(GlobalAccess().get_main_window()) self.time_format = 'hh:mm:ss' def exec(self): self.init_ui() return super().exec() def init_ui(self): self.setWindowTitle(_('Start time change')) self.setWindowIcon(QIcon(config.ICON)) self.setSizeGripEnabled(False) self.setModal(True) self.layout = QFormLayout(self) self.time_add = QRadioButton(_('Add')) self.time_add.setChecked(True) self.time_reduce = QRadioButton(_('Reduce')) self.time_value = QTimeEdit() self.time_value.setDisplayFormat(self.time_format) self.layout.addRow(self.time_add) self.layout.addRow(self.time_reduce) self.layout.addRow(self.time_value) def cancel_changes(): self.close() def apply_changes(): try: self.apply_changes_impl() except Exception as e: logging.error(str(e)) self.close() button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) self.button_ok = button_box.button(QDialogButtonBox.Ok) self.button_ok.setText(_('OK')) self.button_ok.clicked.connect(apply_changes) self.button_cancel = button_box.button(QDialogButtonBox.Cancel) self.button_cancel.setText(_('Cancel')) self.button_cancel.clicked.connect(cancel_changes) self.layout.addRow(button_box) self.show() def apply_changes_impl(self): change_start_time(self.time_add.isChecked(), time_to_otime(self.time_value.time())) GlobalAccess().get_main_window().refresh()
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setMaximumWidth(960) layout = QVBoxLayout() layout.setContentsMargins(4, 4, 4, 4) layout.setSpacing(4) self.setLayout(layout) self.imageView = QImageView(self) layout.addWidget(self.imageView) self.slider = Slider(self) self.slider.setOrientation(Qt.Horizontal) self.slider.valueChanged.connect(self.handleSliderChange) self.slider.setTickInterval(1) layout.addWidget(self.slider) hlayout = QHBoxLayout() layout.addLayout(hlayout) self.prevLabel = QLabel(self) self.currentIndex = QSpinBox(self) self.currentIndex.valueChanged.connect(self.handleIndexChange) self.currentTime = QTimeEdit(self) self.currentTime.setDisplayFormat("H:mm:ss.zzz") self.currentTime.timeChanged.connect(self.handleTimeChange) self.nextLabel = QLabel(self) hlayout.addWidget(self.prevLabel) hlayout.addStretch() hlayout.addWidget(QLabel("Frame index:", self)) hlayout.addWidget(self.currentIndex) hlayout.addWidget(QLabel("Timestamp:", self)) hlayout.addWidget(self.currentTime) hlayout.addStretch() hlayout.addWidget(self.nextLabel) hlayout = QHBoxLayout() hlayout.setContentsMargins(0, 0, 0, 0) hlayout.setSpacing(4) layout.addLayout(hlayout) self.okayBtn = QPushButton("&OK", self) self.cancelBtn = QPushButton("&Cancel", self) hlayout.addStretch() hlayout.addWidget(self.okayBtn) hlayout.addWidget(self.cancelBtn) self.setFrameSource(None, None)
def initUI(self): lbl = QLabel('QTimeEdit') timeedit = QTimeEdit(self) timeedit.setTime(QTime.currentTime()) timeedit.setTimeRange(QTime(3, 00, 00), QTime(23, 30, 00)) # QTimeEdit 클래스를 이용해서 시간 편집 위젯(timeedit)을 하나 만들어줍니다. # # setTime 메서드에 QTime.currentTime()를 입력해서 프로그램이 # 실행될 때 현재 시간으로 표시되도록 합니다. # # setTimeRange 이용하면 사용자가 선택할 수 있는 시간의 범위를 제한할 수 있습니다. # # 최소 시간은 디폴트로 00시 00분 00초 000밀리초로 설정되어 있고, # 최대 시간은 23시 59분 59초 999밀리초로 설정되어 있습니다. timeedit.setDisplayFormat('hh:mm:ss') # setDisplayFormat 메서드를 이용해서 시간이 'hh:mm:ss'의 # 형식으로 표시되도록 설정했습니다. vbox = QVBoxLayout() vbox.addWidget(lbl) vbox.addWidget(timeedit) vbox.addStretch() # 수직 박스 레이아웃을 이용해서 라벨과 시간 편집 위젯을 수직으로 배치하고, # 전체 위젯의 레이아웃으로 설정합니다. self.setLayout(vbox) self.setWindowTitle('QTimeEdit') self.setGeometry(300, 300, 300, 200) self.show()
def clock(self, layout): self.verticalLayoutClock = QVBoxLayout(self) self.dateEdit = QDateEdit(self) self.dateEdit.setDisplayFormat("MMM dd yyyy") self.dateEdit.setDisabled(True) self.verticalLayoutClock.addWidget(self.dateEdit) self.timeEdit = QTimeEdit(self) self.timeEdit.setDisplayFormat("hh:mm:ss AP") self.timeEdit.setDisabled(True) self.verticalLayoutClock.addWidget(self.timeEdit) self.updateTime() self.timer = QTimer(self) self.timer.timeout.connect(self.updateTime) self.timer.start(1000) layout.addLayout(self.verticalLayoutClock)
def __init__(self, parent=None): super(ClassTimePicker, self).__init__(parent=parent) self.time_selector = QTimeEdit() self.time_selector.sizePolicy().setRetainSizeWhenHidden(False) self.time_selector.setDisplayFormat("hh:mm AP") self.time_selector.setTime(QTime(12, 0, 0)) self.day_picker = DayPicker() self.day_picker.sizePolicy().setRetainSizeWhenHidden(False) self.layout = QHBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.layout.addWidget(self.time_selector) self.layout.addWidget(self.day_picker) self.setLayout(self.layout)
def __set_uhrzeit_datum(self, uhrzeit: str, widget: QtWidgets.QTimeEdit): """ Setzt die Uhrzeit in einem QTimeEdit in der GUI. Args: uhrzeit: Uhrzeit des Termins im Format h:m widget: QTimeEdit, welches gesezt wird Raise: AssertionError: Zeitangabe fehlerhaft """ time = QTime.fromString(uhrzeit, 'h:m') assert(QTime.isValid(time)) widget.setTime(time)
class TimeEdit(QWidget): def __init__(self, parent, initial_time, label, on_update=lambda x: x): """ Args: parent: ColorMapWindow instance """ QWidget.__init__(self, parent) self.parent = parent self.on_update = on_update self.label = QLabel(label) self.qt_time = QTime.fromString(initial_time) self.time_edit = QTimeEdit(self.qt_time) self.time_edit.timeChanged.connect(self.update) self.grid = QGridLayout() self.fill_layout() self.setLayout(self.grid) @property def time(self): return self.qt_time.toPyTime().strftime('%H:%M') def fill_layout(self): grid = self.grid grid.addWidget(self.label, 0, 0) grid.addWidget(self.time_edit, 1, 0) @slot() def update(self): self.qt_time = self.time_edit.time() self.on_update(self.time) def update_constraint(self, min_time, max_time): pass
def __init__(self, **kwargs): super().__init__(**kwargs) self.setLayout(QVBoxLayout(self)) # Start time self.startGroup = QGroupBox(self) self.startGroup.setLayout(QHBoxLayout()) self.layout().addWidget(self.startGroup) self.startEdit = QTimeEdit(self.startGroup) self.startEdit.setDisplayFormat('HH.mm.ss.zzz') self.startGroup.layout().addWidget(self.startEdit) self.startLabel = QLabel(self.startGroup) self.startLabel.setAlignment(Qt.AlignCenter) self.startGroup.layout().addWidget(self.startLabel) # Stop time self.stopGroup = QGroupBox(self) self.stopGroup.setLayout(QHBoxLayout()) self.layout().addWidget(self.stopGroup) self.stopEdit = QTimeEdit(self.stopGroup) self.stopEdit.setDisplayFormat('HH.mm.ss.zzz') self.stopGroup.layout().addWidget(self.stopEdit) self.stopLabel = QLabel(self.stopGroup) self.stopLabel.setAlignment(Qt.AlignCenter) self.stopGroup.layout().addWidget(self.stopLabel) # Loop self.loopGroup = QGroupBox(self) self.loopGroup.setLayout(QHBoxLayout()) self.layout().addWidget(self.loopGroup) self.spinLoop = QSpinBox(self.loopGroup) self.spinLoop.setRange(-1, 1000000) self.loopGroup.layout().addWidget(self.spinLoop) self.loopLabel = QLabel(self.loopGroup) self.loopLabel.setAlignment(Qt.AlignCenter) self.loopGroup.layout().addWidget(self.loopLabel) self.retranslateUi()
def __init__(self): super().__init__() # Make widgets ################# self.edit1 = QTimeEdit() self.edit2 = QTimeEdit() self.edit3 = QTimeEdit() self.edit1.setMinimumTime(datetime.time(hour=8, minute=30, second=30)) self.edit2.setMinimumTime(datetime.time(hour=8, minute=30, second=30)) self.edit3.setMinimumTime(datetime.time(hour=8, minute=30, second=30)) self.edit1.setMaximumTime(datetime.time(hour=18, minute=30, second=30)) self.edit2.setMaximumTime(datetime.time(hour=18, minute=30, second=30)) self.edit3.setMaximumTime(datetime.time(hour=18, minute=30, second=30)) self.edit1.setTime(datetime.datetime.now().time()) self.edit2.setTime(datetime.datetime.now().time()) self.edit3.setTime(datetime.datetime.now().time()) # Format: see http://doc.qt.io/qt-5/qdatetime.html#toString-2 self.edit1.setDisplayFormat("HH:mm") self.edit2.setDisplayFormat("HH:mm:ss t") self.edit3.setDisplayFormat("h m AP") self.btn = QPushButton("Print") # Set button slot ############## self.btn.clicked.connect(self.printText) # Set the layout ############### vbox = QVBoxLayout() vbox.addWidget(self.edit1) vbox.addWidget(self.edit2) vbox.addWidget(self.edit3) vbox.addWidget(self.btn) self.setLayout(vbox)
def createDateTimeEdits(self): self.editsGroup = QGroupBox("Date and time spin boxes") dateLabel = QLabel() dateEdit = QDateEdit(QDate.currentDate()) dateEdit.setDateRange(QDate(2005, 1, 1), QDate(2010, 12, 31)) dateLabel.setText("Appointment date (between %s and %s):" % (dateEdit.minimumDate().toString(Qt.ISODate), dateEdit.maximumDate().toString(Qt.ISODate))) timeLabel = QLabel() timeEdit = QTimeEdit(QTime.currentTime()) timeEdit.setTimeRange(QTime(9, 0, 0, 0), QTime(16, 30, 0, 0)) timeLabel.setText("Appointment time (between %s and %s):" % (timeEdit.minimumTime().toString(Qt.ISODate), timeEdit.maximumTime().toString(Qt.ISODate))) self.meetingLabel = QLabel() self.meetingEdit = QDateTimeEdit(QDateTime.currentDateTime()) formatLabel = QLabel("Format string for the meeting date and time:") formatComboBox = QComboBox() formatComboBox.addItem('yyyy-MM-dd hh:mm:ss (zzz \'ms\')') formatComboBox.addItem('hh:mm:ss MM/dd/yyyy') formatComboBox.addItem('hh:mm:ss dd/MM/yyyy') formatComboBox.addItem('hh:mm:ss') formatComboBox.addItem('hh:mm ap') formatComboBox.activated[str].connect(self.setFormatString) self.setFormatString(formatComboBox.currentText()) editsLayout = QVBoxLayout() editsLayout.addWidget(dateLabel) editsLayout.addWidget(dateEdit) editsLayout.addWidget(timeLabel) editsLayout.addWidget(timeEdit) editsLayout.addWidget(self.meetingLabel) editsLayout.addWidget(self.meetingEdit) editsLayout.addWidget(formatLabel) editsLayout.addWidget(formatComboBox) self.editsGroup.setLayout(editsLayout)
def __init__(self, model): super().__init__() self.header = QLabel('') self.desc = QLineEdit() self.date = QDateEdit() self.time = QTimeEdit() self.init_ui() self.mapper = QDataWidgetMapper() self.mapper.setModel(model) self.mapper.setSubmitPolicy(QDataWidgetMapper.ManualSubmit) self.mapper.addMapping(self.desc, TaskModel.col_desc) self.mapper.addMapping(self.date, TaskModel.col_date) self.mapper.addMapping(self.time, TaskModel.col_time)
def __init__(self, parent, initial_time, label, on_update=lambda x: x): """ Args: parent: ColorMapWindow instance """ QWidget.__init__(self, parent) self.parent = parent self.on_update = on_update self.label = QLabel(label) self.qt_time = QTime.fromString(initial_time) self.time_edit = QTimeEdit(self.qt_time) self.time_edit.timeChanged.connect(self.update) self.grid = QGridLayout() self.fill_layout() self.setLayout(self.grid)
def __init__(self, size, cue=None, parent=None): super().__init__(size, cue=cue, parent=parent) # Start at self.startGroup = QGroupBox(self) self.startGroup.setLayout(QHBoxLayout()) self.startEdit = QTimeEdit(self.startGroup) self.startEdit.setDisplayFormat('HH.mm.ss.zzz') self.startGroup.layout().addWidget(self.startEdit) self.startLabel = QLabel(self.startGroup) self.startLabel.setAlignment(QtCore.Qt.AlignCenter) self.startGroup.layout().addWidget(self.startLabel) self.layout().addWidget(self.startGroup) # Loop self.loopGroup = QGroupBox(self) self.loopGroup.setLayout(QHBoxLayout()) self.spinLoop = QSpinBox(self.loopGroup) self.spinLoop.setRange(-1, 1000000) self.loopGroup.layout().addWidget(self.spinLoop) self.loopLabel = QLabel(self.loopGroup) self.loopLabel.setAlignment(QtCore.Qt.AlignCenter) self.loopGroup.layout().addWidget(self.loopLabel) self.layout().addWidget(self.loopGroup) # Checks self.checkPause = QCheckBox(self) self.layout().addWidget(self.checkPause) self.retranslateUi()
def __init__(self, **kwargs): super().__init__(**kwargs) self.cue_id = -1 self.setLayout(QVBoxLayout(self)) self.cueDialog = CueListDialog( cues=Application().cue_model.filter(MediaCue), parent=self) self.cueGroup = QGroupBox(self) self.cueGroup.setLayout(QVBoxLayout()) self.layout().addWidget(self.cueGroup) self.cueButton = QPushButton(self.cueGroup) self.cueButton.clicked.connect(self.select_cue) self.cueGroup.layout().addWidget(self.cueButton) self.cueLabel = QLabel(self.cueGroup) self.cueLabel.setAlignment(QtCore.Qt.AlignCenter) self.cueGroup.layout().addWidget(self.cueLabel) self.seekGroup = QGroupBox(self) self.seekGroup.setLayout(QHBoxLayout()) self.layout().addWidget(self.seekGroup) self.seekEdit = QTimeEdit(self.seekGroup) self.seekEdit.setDisplayFormat('HH.mm.ss.zzz') self.seekGroup.layout().addWidget(self.seekEdit) self.seekLabel = QLabel(self.seekGroup) self.seekLabel.setAlignment(QtCore.Qt.AlignCenter) self.seekGroup.layout().addWidget(self.seekLabel) self.layout().addSpacing(200) self.retranslateUi()
class TaskView(QWidget): close = pyqtSignal() def __init__(self, model): super().__init__() self.header = QLabel('') self.desc = QLineEdit() self.date = QDateEdit() self.time = QTimeEdit() self.init_ui() self.mapper = QDataWidgetMapper() self.mapper.setModel(model) self.mapper.setSubmitPolicy(QDataWidgetMapper.ManualSubmit) self.mapper.addMapping(self.desc, TaskModel.col_desc) self.mapper.addMapping(self.date, TaskModel.col_date) self.mapper.addMapping(self.time, TaskModel.col_time) def set_task(self, index): self.mapper.setCurrentIndex(index) self.header.setText('РЕДАКТИРОВАНИЕ ЗАДАЧИ') # text = 'НОВАЯ ЗАДАЧА' # self.date.setDate(QDate().currentDate()) def create_date(self): self.date.setDisplayFormat('dd.MM.yyyy') self.date.setCalendarPopup(True) self.date.setFixedWidth(120) return self.date def create_time(self): self.time.setDisplayFormat('hh.mm') self.time.setFixedWidth(120) return self.time def create_date_buttons(self): date_lt = QHBoxLayout() btn_now = QPushButton('сегодня') btn_now.clicked.connect(lambda: self.date.setDate(QDate().currentDate())) date_lt.addWidget(btn_now, 0, Qt.AlignCenter) btn_tomorrow = QPushButton('завтра') btn_tomorrow.clicked.connect(lambda: self.date.setDate(QDate().currentDate().addDays(1))) date_lt.addWidget(btn_tomorrow, 0, Qt.AlignCenter) btn_week_later = QPushButton('через неделю') btn_week_later.clicked.connect(lambda: self.date.setDate(QDate().currentDate().addDays(7))) date_lt.addWidget(btn_week_later, 0, Qt.AlignCenter) return date_lt # def create_time_choice(self): # self.time.setMaxVisibleItems(15) # self.time.setStyleSheet('QComboBox { combobox-popup: 0; }') # for it in range(24): # self.time.insertItem(it * 2 + 0, '%.2d:00' % it) # self.time.insertItem(it * 2 + 1, '%.2d:30' % it) # # return self.time def save(self): print('save', self.mapper.submit()) self.close.emit() def cancel(self): self.close.emit() def remove(self): self.mapper.model().removeRow(self.mapper.currentIndex()) self.close.emit() def create_control_buttons(self): control_lt = QHBoxLayout() btn_save = QPushButton('Сохранить') btn_save.clicked.connect(self.save) control_lt.addWidget(btn_save, 0, Qt.AlignCenter) btn_cancel = QPushButton('Отменить') btn_cancel.clicked.connect(self.cancel) control_lt.addWidget(btn_cancel, 0, Qt.AlignCenter) btn_remove = QPushButton('Удалить') btn_remove.clicked.connect(self.remove) control_lt.addWidget(btn_remove, 1, Qt.AlignRight) return control_lt def create_main_form(self): fm = QFormLayout() fm.addRow(self.header) fm.addRow(QLabel('')) fm.addRow(self.desc) fm.addRow(QLabel('')) fm.addRow(QLabel('Когда это нужно сделать?')) fm.addRow(self.create_date()) fm.addRow(self.create_date_buttons()) fm.addRow(QLabel('')) fm.addRow(QLabel('Во сколько?')) fm.addRow(self.create_time()) return fm def init_ui(self): layout = QVBoxLayout() layout.addLayout(self.create_main_form()) layout.addStretch() layout.addLayout(self.create_control_buttons()) self.setLayout(layout)
class MainWidget(QWidget): def __init__(self): QWidget.__init__(self) # Set Time One Group self.time_one_calendar = QCalendarWidget() self.time_one_country_combobox = QComboBox() self.time_one_vbox = QVBoxLayout() self.time_one_groupbox = QGroupBox("Time One") self.time_one_bottom_hbox = QHBoxLayout() self.time_one_time_edit = QTimeEdit() self.time_one_default_button = QPushButton() self.time_one_default_button.setIcon(QIcon("%s/gnome-set-time.png" % icon_path)) self.time_one_default_button.setMaximumSize(50, 50) self.time_one_bottom_hbox.addWidget(self.time_one_time_edit) self.time_one_bottom_hbox.addWidget(self.time_one_default_button) self.time_one_vbox.addWidget(self.time_one_country_combobox) self.time_one_vbox.addWidget(self.time_one_calendar) self.time_one_vbox.addLayout(self.time_one_bottom_hbox) self.time_one_groupbox.setLayout(self.time_one_vbox) # Set Time Two Group self.time_two_groupbox = QGroupBox("Time Two") self.time_two_calendar = QCalendarWidget() self.time_two_vbox = QVBoxLayout() self.time_two_country_combobox = QComboBox() self.time_two_bottom_hbox = QHBoxLayout() self.time_two_time_edit = QTimeEdit() self.time_two_default_button = QPushButton() self.time_two_default_button.setIcon(QIcon("%s/gnome-set-time.png" % icon_path)) self.time_two_default_button.setMaximumSize(50, 50) self.time_two_bottom_hbox.addWidget(self.time_two_time_edit) self.time_two_bottom_hbox.addWidget(self.time_two_default_button) self.time_two_vbox.addWidget(self.time_two_country_combobox) self.time_two_vbox.addWidget(self.time_two_calendar) self.time_two_vbox.addLayout(self.time_two_bottom_hbox) self.time_two_groupbox.setLayout(self.time_two_vbox) # Set main layout self.main_layout = QHBoxLayout() self.main_layout.addWidget(self.time_one_groupbox) self.main_layout.addWidget(self.time_two_groupbox) self.setLayout(self.main_layout) # Wire-up your widgets! self.time_one_connect() self.time_two_connect() self.time_one_default_button.clicked.connect(self.set_local_time_one) self.time_two_default_button.clicked.connect(self.set_local_time_two) # Set the local time for time one self.set_local_country() self.set_local_time_one() # Finally, convert the second time based on the first self.convert_timeone_to_timetwo() def set_local_country(self): global_timezone_list = timezone_info.get_global_timezone_list() local_tz_index = global_timezone_list.index(str(self.get_local_timezone())) self.time_one_country_combobox.addItems(global_timezone_list) self.time_one_country_combobox.setCurrentIndex(local_tz_index) self.time_two_country_combobox.addItems(global_timezone_list) # To-do: Current solution works for Debian systems. Need to find repo solution that # allows for something like "from tzlocal import get_localzone" @staticmethod def get_local_timezone(): timezone_file = '/etc/timezone' try: file = open(timezone_file, 'r') system_timezone = file.read().rstrip() except IOError: print("Unable to open %s") & timezone_file system_timezone = 'UTC' return system_timezone @staticmethod def get_local_times(): local_hour = datetime.datetime.now().strftime("%H") local_minute = datetime.datetime.now().strftime("%M") local_current_time = QTime(int(local_hour), int(local_minute), 0, 0) return local_current_time def set_local_time_one(self): # Set time for one time local_current_time = self.get_local_times() self.time_one_time_edit.setTime(local_current_time) # Set date for one calendar self.time_one_calendar.setSelectedDate(QDate.currentDate()) # Convert the second time based on the first self.convert_timeone_to_timetwo() def set_local_time_two(self): # Set time for one time local_current_time = self.get_local_times() self.time_two_time_edit.setTime(local_current_time) # Set date for one calendar self.time_two_calendar.setSelectedDate(QDate.currentDate()) # Convert the first time based on the second self.convert_timetwo_to_timeone() def time_one_connect(self): self.time_one_country_combobox.activated.connect(self.convert_timeone_to_timetwo) self.time_one_calendar.clicked.connect(self.convert_timeone_to_timetwo) self.time_one_calendar.currentPageChanged.connect(self.convert_timeone_to_timetwo) self.time_one_time_edit.timeChanged.connect(self.convert_timeone_to_timetwo) def time_two_connect(self): self.time_two_country_combobox.activated.connect(self.convert_timeone_to_timetwo) self.time_two_calendar.clicked.connect(self.convert_timetwo_to_timeone) self.time_two_calendar.currentPageChanged.connect(self.convert_timetwo_to_timeone) self.time_two_time_edit.timeChanged.connect(self.convert_timetwo_to_timeone) def time_one_disconnect(self): self.time_one_calendar.clicked.disconnect() self.time_one_country_combobox.activated.disconnect() self.time_one_time_edit.timeChanged.disconnect() def time_two_disconnect(self): self.time_two_calendar.clicked.disconnect() self.time_two_country_combobox.activated.disconnect() self.time_two_time_edit.timeChanged.disconnect() def clear_combo_boxes(self): self.time_one_country_combobox.clear() self.time_two_country_combobox.clear() def __amend_country_region(self): """ Used to add the regional header before converting if a region outside of global is used. """ current_region = timezone_info.get_city_region(self.time_one_country_combobox.currentText()) time_one_country = self.time_one_country_combobox.currentText() time_two_country = self.time_two_country_combobox.currentText() if '/' not in time_one_country: time_one_country = current_region+'/'+self.time_one_country_combobox.currentText() time_two_country = current_region+'/'+self.time_two_country_combobox.currentText() return time_one_country, time_two_country def convert_timeone_to_timetwo(self): # Disconnect time two widgets,so that they do not run self.time_two_disconnect() time_one_country, time_two_country = self.__amend_country_region() date_time_one = datetime.datetime(self.time_one_calendar.yearShown(), self.time_one_calendar.monthShown(), self.time_one_calendar.selectedDate().day(), self.time_one_time_edit.time().hour(), self.time_one_time_edit.time().minute()) first_tz = timezone(time_one_country) second_tz = timezone(time_two_country) first_dt = first_tz.localize(date_time_one) second_dt = first_dt.astimezone(second_tz) new_date_two = QDate(second_dt.year, second_dt.month, second_dt.day) self.time_two_calendar.setSelectedDate(new_date_two) new_time_two = QTime(int(second_dt.hour), int(second_dt.minute)) self.time_two_time_edit.setTime(new_time_two) # Reconnect time one widgets. self.time_two_connect() def convert_timetwo_to_timeone(self): # Disconnect time one widgets,so that they do not run self.time_one_disconnect() time_one_country, time_two_country = self.__amend_country_region() date_time_two = datetime.datetime(self.time_two_calendar.yearShown(), self.time_two_calendar.monthShown(), self.time_two_calendar.selectedDate().day(), self.time_two_time_edit.time().hour(), self.time_two_time_edit.time().minute()) first_tz = timezone(time_one_country) second_tz = timezone(time_two_country) second_dt = second_tz.localize(date_time_two) first_dt = second_dt.astimezone(first_tz) new_date_one = QDate(first_dt.year, first_dt.month, first_dt.day) self.time_one_calendar.setSelectedDate(new_date_one) new_time_one = QTime(int(first_dt.hour), int(first_dt.minute)) self.time_one_time_edit.setTime(new_time_one) # Reconnect time one widgets self.time_one_connect()
class SeekSettings(SettingsPage): Name = 'Seek Settings' def __init__(self, **kwargs): super().__init__(**kwargs) self.cue_id = -1 self.setLayout(QVBoxLayout(self)) self.cueDialog = CueListDialog( cues=Application().cue_model.filter(MediaCue), parent=self) self.cueGroup = QGroupBox(self) self.cueGroup.setLayout(QVBoxLayout()) self.layout().addWidget(self.cueGroup) self.cueButton = QPushButton(self.cueGroup) self.cueButton.clicked.connect(self.select_cue) self.cueGroup.layout().addWidget(self.cueButton) self.cueLabel = QLabel(self.cueGroup) self.cueLabel.setAlignment(QtCore.Qt.AlignCenter) self.cueGroup.layout().addWidget(self.cueLabel) self.seekGroup = QGroupBox(self) self.seekGroup.setLayout(QHBoxLayout()) self.layout().addWidget(self.seekGroup) self.seekEdit = QTimeEdit(self.seekGroup) self.seekEdit.setDisplayFormat('HH.mm.ss.zzz') self.seekGroup.layout().addWidget(self.seekEdit) self.seekLabel = QLabel(self.seekGroup) self.seekLabel.setAlignment(QtCore.Qt.AlignCenter) self.seekGroup.layout().addWidget(self.seekLabel) self.layout().addSpacing(200) self.retranslateUi() def retranslateUi(self): self.cueGroup.setTitle('Cue') self.cueButton.setText('Click to select') self.cueLabel.setText('Not selected') self.seekGroup.setTitle('Seek') self.seekLabel.setText('Time to reach') def select_cue(self): if self.cueDialog.exec_() == self.cueDialog.Accepted: cue = self.cueDialog.selected_cues()[0] self.cue_id = cue.id self.seekEdit.setMaximumTime( QTime.fromMSecsSinceStartOfDay(cue.media.duration)) self.cueLabel.setText(cue.name) def enable_check(self, enabled): self.cueGroup.setCheckable(enabled) self.cueGroup.setChecked(False) self.seekGroup.setCheckable(enabled) self.seekGroup.setChecked(False) def get_settings(self): return {'target_id': self.cue_id, 'time': self.seekEdit.time().msecsSinceStartOfDay()} def load_settings(self, settings): if settings is not None: cue = Application().cue_model.get(settings['target_id']) if cue is not None: self.cue_id = settings['target_id'] self.seekEdit.setTime( QTime.fromMSecsSinceStartOfDay(settings['time'])) self.seekEdit.setMaximumTime( QTime.fromMSecsSinceStartOfDay(cue.media.duration)) self.cueLabel.setText(cue.name)
class MediaCueSettings(SettingsPage): Name = 'Media-Cue' def __init__(self, **kwargs): super().__init__(**kwargs) self.setLayout(QVBoxLayout(self)) # Start time self.startGroup = QGroupBox(self) self.startGroup.setLayout(QHBoxLayout()) self.layout().addWidget(self.startGroup) self.startEdit = QTimeEdit(self.startGroup) self.startEdit.setDisplayFormat('HH.mm.ss.zzz') self.startGroup.layout().addWidget(self.startEdit) self.startLabel = QLabel(self.startGroup) self.startLabel.setAlignment(Qt.AlignCenter) self.startGroup.layout().addWidget(self.startLabel) # Stop time self.stopGroup = QGroupBox(self) self.stopGroup.setLayout(QHBoxLayout()) self.layout().addWidget(self.stopGroup) self.stopEdit = QTimeEdit(self.stopGroup) self.stopEdit.setDisplayFormat('HH.mm.ss.zzz') self.stopGroup.layout().addWidget(self.stopEdit) self.stopLabel = QLabel(self.stopGroup) self.stopLabel.setAlignment(Qt.AlignCenter) self.stopGroup.layout().addWidget(self.stopLabel) # Loop self.loopGroup = QGroupBox(self) self.loopGroup.setLayout(QHBoxLayout()) self.layout().addWidget(self.loopGroup) self.spinLoop = QSpinBox(self.loopGroup) self.spinLoop.setRange(-1, 1000000) self.loopGroup.layout().addWidget(self.spinLoop) self.loopLabel = QLabel(self.loopGroup) self.loopLabel.setAlignment(Qt.AlignCenter) self.loopGroup.layout().addWidget(self.loopLabel) self.retranslateUi() def retranslateUi(self): self.startGroup.setTitle('Start time') self.stopLabel.setText('Stop position of the media') self.stopGroup.setTitle('Stop time') self.startLabel.setText('Start position of the media') self.loopGroup.setTitle('Loop') self.loopLabel.setText('Repetition after first play (-1 = infinite)') def get_settings(self): conf = {'_media_': {}} checkable = self.startGroup.isCheckable() if not (checkable and not self.startGroup.isChecked()): time = self.startEdit.time().msecsSinceStartOfDay() conf['_media_']['start_time'] = time if not (checkable and not self.stopGroup.isChecked()): time = self.stopEdit.time().msecsSinceStartOfDay() conf['_media_']['stop_time'] = time if not (checkable and not self.loopGroup.isChecked()): conf['_media_']['loop'] = self.spinLoop.value() return conf def enable_check(self, enable): self.startGroup.setCheckable(enable) self.startGroup.setChecked(False) self.stopGroup.setCheckable(enable) self.stopGroup.setChecked(False) self.loopGroup.setCheckable(enable) self.loopGroup.setChecked(False) def load_settings(self, settings): if '_media_' in settings: if 'loop' in settings['_media_']: self.spinLoop.setValue(settings['_media_']['loop']) if 'start_time' in settings['_media_']: t = self._to_qtime(settings['_media_']['start_time']) self.startEdit.setTime(t) if 'stop_time' in settings['_media_']: t = self._to_qtime(settings['_media_']['stop_time']) self.stopEdit.setTime(t) t = self._to_qtime(settings['_media_'].get('duration', 0)) self.startEdit.setMaximumTime(t) self.stopEdit.setMaximumTime(t) def _to_qtime(self, m_seconds): return QTime.fromMSecsSinceStartOfDay(m_seconds)
class MediaCueGeneral(CueGeneral): Name = 'Cue Settings' def __init__(self, size, cue=None, parent=None): super().__init__(size, cue=cue, parent=parent) # Start at self.startGroup = QGroupBox(self) self.startGroup.setLayout(QHBoxLayout()) self.startEdit = QTimeEdit(self.startGroup) self.startEdit.setDisplayFormat('HH.mm.ss.zzz') self.startGroup.layout().addWidget(self.startEdit) self.startLabel = QLabel(self.startGroup) self.startLabel.setAlignment(QtCore.Qt.AlignCenter) self.startGroup.layout().addWidget(self.startLabel) self.layout().addWidget(self.startGroup) # Loop self.loopGroup = QGroupBox(self) self.loopGroup.setLayout(QHBoxLayout()) self.spinLoop = QSpinBox(self.loopGroup) self.spinLoop.setRange(-1, 1000000) self.loopGroup.layout().addWidget(self.spinLoop) self.loopLabel = QLabel(self.loopGroup) self.loopLabel.setAlignment(QtCore.Qt.AlignCenter) self.loopGroup.layout().addWidget(self.loopLabel) self.layout().addWidget(self.loopGroup) # Checks self.checkPause = QCheckBox(self) self.layout().addWidget(self.checkPause) self.retranslateUi() def retranslateUi(self): self.startGroup.setTitle('Start time') self.startLabel.setText('Amount of skip time') self.loopGroup.setTitle("Loop") self.loopLabel.setText("Repetition after first play (-1 = infinite)") self.checkPause.setText("Enable Pause") def get_configuration(self): conf = super().get_configuration() conf['media'] = {} checkable = self.startGroup.isCheckable() if not (checkable and not self.startGroup.isChecked()): time = self.startEdit.time().msecsSinceStartOfDay() conf['media']['start_at'] = time if not (checkable and not self.loopGroup.isChecked()): conf['media']['loop'] = self.spinLoop.value() if self.checkPause.checkState() != QtCore.Qt.PartiallyChecked: conf['pause'] = self.checkPause.isChecked() return conf def enable_check(self, enable): super().enable_check(enable) self.startGroup.setCheckable(enable) self.startGroup.setChecked(False) self.loopGroup.setCheckable(enable) self.loopGroup.setChecked(False) self.checkPause.setTristate(enable) if enable: self.checkPause.setCheckState(QtCore.Qt.PartiallyChecked) def set_configuration(self, conf): super().set_configuration(conf) if 'pause' in conf: self.checkPause.setChecked(conf['pause']) if 'media' in conf: if 'loop' in conf['media']: self.spinLoop.setValue(conf['media']['loop']) if 'duration' in conf['media'] and conf['media']['duration'] > 0: t = QTime().fromMSecsSinceStartOfDay(conf['media']['duration']) self.startEdit.setMaximumTime(t) if 'start_at' in conf['media']: t = QTime().fromMSecsSinceStartOfDay(conf['media']['start_at']) self.startEdit.setTime(t)