def __init__(self): QWidget.__init__(self) self._line_edit = ClearableLineEdit() self._calendar_button = QToolButton() self._calendar_button.setPopupMode(QToolButton.InstantPopup) self._calendar_button.setFixedSize(26, 26) self._calendar_button.setAutoRaise(True) self._calendar_button.setIcon(resourceIcon("calendar_date_range.svg")) self._calendar_button.setStyleSheet( "QToolButton::menu-indicator { image: none; }") tool_menu = QMenu(self._calendar_button) self._calendar_widget = QCalendarWidget(tool_menu) action = QWidgetAction(tool_menu) action.setDefaultWidget(self._calendar_widget) tool_menu.addAction(action) self._calendar_button.setMenu(tool_menu) layout = QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self._line_edit) layout.addWidget(self._calendar_button) self.setLayout(layout) self._calendar_widget.activated.connect(self.setDate)
def __init__(self, subject_settings): super(SubjectWidget, self).__init__() self.subject_enums = DBWrapper().return_enums('subject') subject_layout = QGridLayout(self) subject_layout.setColumnMinimumWidth(2, 60) subject_layout.addWidget(QLabel("Id: "), 0, 0, 1, 1) self.id_combo = QComboBox() self.id_combo.setEditable(True) self.id_combo.addItem('') self.id_combo.addItems(DBWrapper().list_all_subjects()) self.id_combo.currentIndexChanged.connect(self.load_subject) self.id_combo.lineEdit().editingFinished.connect(self.check_subject) subject_layout.addWidget(self.id_combo, 0, 1, 1, 4) subject_layout.addWidget(QLabel("Name: "), 1, 0, 1, 1) self.name_edit = QLineEdit() self.name_edit.setMaxLength(135) subject_layout.addWidget(self.name_edit, 1, 1, 1, 4) subject_layout.addWidget(QLabel("Sex: "), 2, 0, 1, 1) self.sex_combo = QComboBox() self.sex_combo.addItems(self.subject_enums['sex'] if 'sex' in self.subject_enums.keys() else []) self.sex_combo.setCurrentIndex(0) subject_layout.addWidget(self.sex_combo, 2, 1, 1, 1) subject_layout.addWidget((QLabel("Date of birth: ")), 3, 0, 1, 1) self.dob_calendar = QCalendarWidget() subject_layout.addWidget(self.dob_calendar, 3, 1, 1, 3) subject_layout.addWidget(QLabel("NSP file comment: "), 4, 0, 1, 1) self.file_comment = QTextEdit("") self.file_comment.setMaximumHeight(150) subject_layout.addWidget(self.file_comment, 4, 1, 1, 4) # Subject Settings self.subject_settings = subject_settings if not self.subject_settings: self.update_settings_from_db(-1) self.update_subject()
def initUI(self): ml = QVBoxLayout(self) ul = QHBoxLayout(self) dl = QHBoxLayout(self) ml.addLayout(ul) ml.addLayout(dl) col = QColor(0, 0, 0) self.colorText = 'Color Nmae: {}' self.btn = QPushButton('Dialog', self) self.btn.move(20, 20) self.btn.clicked.connect(self.showDialog) self.btn2 = QPushButton('Color', self) self.btn2.move(20, 40) self.btn2.clicked.connect(self.showColorDialoge) self.frm = QFrame(self) self.frm.setStyleSheet("QWidget { background-color: %s }" % col.name()) self.frm.setGeometry(130, 50, 100, 100) self.le = QLineEdit(self) self.le.move(130, 22) self.label = QLabel(self.colorText.format(None), self) self.label.setGeometry(20, 80, 100, 30) self.timer = QBasicTimer() self.pb = QProgressBar(self) self.step = 0 self.pb.setGeometry(20, 170, 300, 20) # calendar self.timeLable = QLabel('time is: ', self) # self.timeLable.setGeometry(20, 120, 100, 30) cal = QCalendarWidget(self) cal.clicked[QDate].connect(self.showDate) ul.addWidget(self.timeLable) dl.addWidget(cal) self.setLayout(ml) self.setGeometry(300, 300, 550, 550) self.setWindowTitle('Dialog') self.show()
def create_calendar_dock_widget(view_menu: QMenu) -> DockWidget: ''' Create calendar dock widget Parameters ---------- view_menu : QMenu Returns ------- value : DockWidget ''' widget = QCalendarWidget() _State.calendar_count += 1 dock_widget = DockWidget("Calendar {}".format(_State.calendar_count)) dock_widget.set_widget(widget) dock_widget.set_toggle_view_action_mode(ToggleViewActionMode.show) view_menu.addAction(dock_widget.toggle_view_action()) return dock_widget
def create_calendar(self): cal = QCalendarWidget(self) cal.setGridVisible(True) cal.clicked[QDate].connect(self.insert_date) return cal
def initUI(self): cal = QCalendarWidget(self) cal.clicked[QDate].connect(self.mainWindow.updateLeft)
class SubjectWidget(QWidget): subject_change = Signal(int) def __init__(self, subject_settings): super(SubjectWidget, self).__init__() self.subject_enums = DBWrapper().return_enums('subject') subject_layout = QGridLayout(self) subject_layout.setColumnMinimumWidth(2, 60) subject_layout.addWidget(QLabel("Id: "), 0, 0, 1, 1) self.id_combo = QComboBox() self.id_combo.setEditable(True) self.id_combo.addItem('') self.id_combo.addItems(DBWrapper().list_all_subjects()) self.id_combo.currentIndexChanged.connect(self.load_subject) self.id_combo.lineEdit().editingFinished.connect(self.check_subject) subject_layout.addWidget(self.id_combo, 0, 1, 1, 4) subject_layout.addWidget(QLabel("Name: "), 1, 0, 1, 1) self.name_edit = QLineEdit() self.name_edit.setMaxLength(135) subject_layout.addWidget(self.name_edit, 1, 1, 1, 4) subject_layout.addWidget(QLabel("Sex: "), 2, 0, 1, 1) self.sex_combo = QComboBox() self.sex_combo.addItems(self.subject_enums['sex'] if 'sex' in self.subject_enums.keys() else []) self.sex_combo.setCurrentIndex(0) subject_layout.addWidget(self.sex_combo, 2, 1, 1, 1) subject_layout.addWidget((QLabel("Date of birth: ")), 3, 0, 1, 1) self.dob_calendar = QCalendarWidget() subject_layout.addWidget(self.dob_calendar, 3, 1, 1, 3) subject_layout.addWidget(QLabel("NSP file comment: "), 4, 0, 1, 1) self.file_comment = QTextEdit("") self.file_comment.setMaximumHeight(150) subject_layout.addWidget(self.file_comment, 4, 1, 1, 4) # Subject Settings self.subject_settings = subject_settings if not self.subject_settings: self.update_settings_from_db(-1) self.update_subject() def update_subject(self): self.name_edit.setText( self.read_dict_value(self.subject_settings, 'name')) self.id_combo.setCurrentText( self.read_dict_value(self.subject_settings, 'id')) self.sex_combo.setCurrentText( self.read_dict_value(self.subject_settings, 'sex')) dob = self.read_dict_value(self.subject_settings, 'birthday') if dob not in [None, '']: q_dob = QDate.fromString(dob, 'yyyy-MM-d') self.dob_calendar.setSelectedDate(q_dob) else: self.dob_calendar.setSelectedDate(QDate.currentDate()) def update_settings_from_db(self, idx): for key, value in DBWrapper().load_subject_details(idx).items(): self.subject_settings[key] = value def load_subject(self): # id is a unique and mandatory field self.check_subject() self.update_subject() def check_subject(self): # when changing the id in the combobox, can be modifying or entering an existing subject id. Check to load data # if so. curr_id = self.id_combo.currentText() if curr_id != '': self.update_settings_from_db(curr_id) self.subject_change.emit(self.subject_settings['subject_id']) else: self.update_settings_from_db(-1) self.subject_change.emit(-1) @staticmethod def read_dict_value(dictionary, value): return str(dictionary[value]) if value in dictionary.keys() else '' def to_dict(self): self.subject_settings['id'] = self.id_combo.currentText() self.subject_settings['name'] = self.name_edit.text() self.subject_settings['sex'] = self.sex_combo.currentText() self.subject_settings['birthday'] = self.dob_calendar.selectedDate( ).toPyDate() self.subject_settings['NSP_comment'] = self.file_comment.toPlainText()