def __init__(self, text, duration=None, dayu_type=None, closable=False, parent=None): super(MMessage, self).__init__(parent) self.setObjectName('message') self.setWindowFlags( Qt.FramelessWindowHint | Qt.Dialog | Qt.WA_TranslucentBackground | Qt.WA_DeleteOnClose) self.setAttribute(Qt.WA_StyledBackground) if dayu_type == MMessage.LoadingType: _icon_label = MLoading.tiny() else: _icon_label = MAvatar.tiny() current_type = dayu_type or MMessage.InfoType _icon_label.set_dayu_image(MPixmap('{}_fill.svg'.format(current_type), vars(dayu_theme).get(current_type + '_color'))) self._content_label = MLabel(parent=self) # self._content_label.set_elide_mode(Qt.ElideMiddle) self._content_label.setText(text) self._close_button = MToolButton(parent=self).icon_only().svg('close_line.svg').tiny() self._close_button.clicked.connect(self.close) self._close_button.setVisible(closable or False) self._main_lay = QHBoxLayout() self._main_lay.addWidget(_icon_label) self._main_lay.addWidget(self._content_label) self._main_lay.addStretch() self._main_lay.addWidget(self._close_button) self.setLayout(self._main_lay) _close_timer = QTimer(self) _close_timer.setSingleShot(True) _close_timer.timeout.connect(self.close) _close_timer.timeout.connect(self.sig_closed) _close_timer.setInterval((duration or self.default_config.get('duration')) * 1000) _ani_timer = QTimer(self) _ani_timer.timeout.connect(self._fade_out) _ani_timer.setInterval((duration or self.default_config.get('duration')) * 1000 - 300) _close_timer.start() _ani_timer.start() self._pos_ani = QPropertyAnimation(self) self._pos_ani.setTargetObject(self) self._pos_ani.setEasingCurve(QEasingCurve.OutCubic) self._pos_ani.setDuration(300) self._pos_ani.setPropertyName('pos') self._opacity_ani = QPropertyAnimation() self._opacity_ani.setTargetObject(self) self._opacity_ani.setDuration(300) self._opacity_ani.setEasingCurve(QEasingCurve.OutCubic) self._opacity_ani.setPropertyName('windowOpacity') self._opacity_ani.setStartValue(0.0) self._opacity_ani.setEndValue(1.0) self._set_proper_position(parent) self._fade_int()
def __init__(self, title, position='right', closable=True, parent=None): super(MDrawer, self).__init__(parent) self.setObjectName('message') self.setWindowFlags(Qt.Popup) # self.setWindowFlags( # Qt.FramelessWindowHint | Qt.Popup | Qt.WA_TranslucentBackground) self.setAttribute(Qt.WA_StyledBackground) self._title_label = MLabel(parent=self).h4() # self._title_label.set_elide_mode(Qt.ElideRight) self._title_label.setText(title) self._close_button = MToolButton( parent=self).icon_only().svg('close_line.svg').small() self._close_button.clicked.connect(self.close) self._close_button.setVisible(closable or False) _title_lay = QHBoxLayout() _title_lay.addWidget(self._title_label) _title_lay.addStretch() _title_lay.addWidget(self._close_button) self._button_lay = QHBoxLayout() self._button_lay.addStretch() self._scroll_area = QScrollArea() self._main_lay = QVBoxLayout() self._main_lay.addLayout(_title_lay) self._main_lay.addWidget(MDivider()) self._main_lay.addWidget(self._scroll_area) self._main_lay.addWidget(MDivider()) self._main_lay.addLayout(self._button_lay) self.setLayout(self._main_lay) self._position = position self._close_timer = QTimer(self) self._close_timer.setSingleShot(True) self._close_timer.timeout.connect(self.close) self._close_timer.timeout.connect(self.sig_closed) self._close_timer.setInterval(300) self._is_first_close = True self._pos_ani = QPropertyAnimation(self) self._pos_ani.setTargetObject(self) self._pos_ani.setEasingCurve(QEasingCurve.OutCubic) self._pos_ani.setDuration(300) self._pos_ani.setPropertyName(b'pos') self._opacity_ani = QPropertyAnimation() self._opacity_ani.setTargetObject(self) self._opacity_ani.setDuration(300) self._opacity_ani.setEasingCurve(QEasingCurve.OutCubic) self._opacity_ani.setPropertyName(b'windowOpacity') self._opacity_ani.setStartValue(0.0) self._opacity_ani.setEndValue(1.0)
def __init__(self, text='', parent=None): super(MLineEdit, self).__init__(text, parent) self._main_layout = QHBoxLayout() self._main_layout.setContentsMargins(0, 0, 0, 0) self._main_layout.addStretch() self._prefix_widget = None self._suffix_widget = None self.setLayout(self._main_layout) self.setProperty('history', self.property('text')) self.setTextMargins(2, 0, 2, 0) self._delay_timer = QTimer() self._delay_timer.setInterval(500) self._delay_timer.setSingleShot(True) self._delay_timer.timeout.connect(self._slot_delay_text_changed) self._dayu_size = dayu_theme.default_size
def _init_ui(self): progress_1 = MProgressBar() progress_1.setValue(10) progress_1.setAlignment(Qt.AlignCenter) progress_2 = MProgressBar() progress_2.setValue(80) progress_normal = MProgressBar() progress_normal.setValue(30) progress_success = MProgressBar().success() progress_success.setValue(100) progress_error = MProgressBar().error() progress_error.setValue(50) form_lay = QFormLayout() form_lay.addRow('Primary:', progress_normal) form_lay.addRow('Success:', progress_success) form_lay.addRow('Error:', progress_error) self.progress_count = 0 self.timer = QTimer() self.timer.setInterval(10) self.timer.timeout.connect(self.slot_timeout) run_button = MPushButton(text='Run Something') run_button.clicked.connect(self.slot_run) self.auto_color_progress = MProgressBar().auto_color() auto_color_lay = QVBoxLayout() auto_color_lay.addWidget(run_button) auto_color_lay.addWidget(self.auto_color_progress) main_lay = QVBoxLayout() main_lay.addWidget(MDivider('Basic')) main_lay.addWidget(progress_1) main_lay.addWidget(progress_2) main_lay.addWidget(MDivider('different type')) main_lay.addLayout(form_lay) main_lay.addWidget(MDivider('auto color')) main_lay.addLayout(auto_color_lay) main_lay.addStretch() self.setLayout(main_lay)
def __init__(self, text, duration=None, dayu_type=None, parent=None): super(MToast, self).__init__(parent) self.setWindowFlags(Qt.FramelessWindowHint | Qt.Dialog | Qt.WA_TranslucentBackground | Qt.WA_DeleteOnClose) self.setAttribute(Qt.WA_StyledBackground) _icon_lay = QHBoxLayout() _icon_lay.addStretch() if dayu_type == MToast.LoadingType: _icon_lay.addWidget( MLoading(size=dayu_theme.huge, color=dayu_theme.text_color_inverse)) else: _icon_label = MAvatar() _icon_label.set_dayu_size(60) _icon_label.set_dayu_image( MPixmap('{}_line.svg'.format(dayu_type or MToast.InfoType), dayu_theme.text_color_inverse)) _icon_lay.addWidget(_icon_label) _icon_lay.addStretch() _content_label = MLabel() _content_label.setText(text) _content_label.setAlignment(Qt.AlignCenter) _main_lay = QVBoxLayout() _main_lay.setContentsMargins(0, 0, 0, 0) _main_lay.addStretch() _main_lay.addLayout(_icon_lay) _main_lay.addSpacing(10) _main_lay.addWidget(_content_label) _main_lay.addStretch() self.setLayout(_main_lay) self.setFixedSize(QSize(120, 120)) _close_timer = QTimer(self) _close_timer.setSingleShot(True) _close_timer.timeout.connect(self.close) _close_timer.timeout.connect(self.sig_closed) _close_timer.setInterval( (duration or self.default_config.get('duration')) * 1000) _ani_timer = QTimer(self) _ani_timer.timeout.connect(self._fade_out) _ani_timer.setInterval( (duration or self.default_config.get('duration')) * 1000 - 300) _close_timer.start() _ani_timer.start() self._opacity_ani = QPropertyAnimation() self._opacity_ani.setTargetObject(self) self._opacity_ani.setDuration(300) self._opacity_ani.setEasingCurve(QEasingCurve.OutCubic) self._opacity_ani.setPropertyName(b'windowOpacity') self._opacity_ani.setStartValue(0.0) self._opacity_ani.setEndValue(0.9) self._get_center_position(parent) self._fade_int()
def setupUI(self): self.setMaximumWidth(Data.getWindowWidth() / 3) self.ui = loadUi(file_path + "\\res\\UI\\ParameterWindow.ui") self.ui.setParent(self) self.setLayout(QVBoxLayout()) self.layout().addWidget(self.ui) self.widget_1 = self.ui.findChild(QWidget, "widget") self.widget_2 = self.ui.findChild(QWidget, "widget_2") self.widget_3 = self.ui.findChild(QWidget, "widget_3") self.widget_4 = self.ui.findChild(QWidget, "widget_4") self.widget_1.setLayout(QVBoxLayout()) self.widget_2.setLayout(QVBoxLayout()) self.widget_4.setLayout(QVBoxLayout()) self.widget_2.layout().setSpacing(8) #设置布局 tab_card = MTabWidget() self.label_filePic = MLabel("") self.widget_1.setMinimumSize(Data.getWindowHeight() / 2.8, Data.getWindowHeight() / 2.8) tab_card.addTab(self.label_filePic, u'预览图') # Todo 加载3d视口 # self.model_widget = QWidget() self.model_widget = CefBrowser(self, url="editor") # self.model_widget.setLayout(QVBoxLayout()) tab_card.addTab(self.model_widget, u'3D视口') self.widget_1.layout().addWidget(tab_card) self.widget_1.layout().setContentsMargins(0, 0, 0, 0) self.widget_2.layout().addWidget(MDivider(u'操作面板')) self.let_filename = MLineEdit(text='filename') tool_button = MLabel(text=u'文件名').mark().secondary() tool_button.setAlignment(Qt.AlignCenter) tool_button.setFixedWidth(80) self.let_filename.set_prefix_widget(tool_button) self.widget_2.layout().addWidget(self.let_filename) self.let_path = MLineEdit(text='filepath') tool_button_2 = MLabel(text=u'文件地址').mark().secondary() tool_button_2.setAlignment(Qt.AlignCenter) tool_button_2.setFixedWidth(80) self.let_path.set_prefix_widget(tool_button_2) self.widget_2.layout().addWidget(self.let_path) self.widget_2.layout().addWidget(MLabel(u'标签')) self.let_tag = MLineEdit(text='tag') self.btn_reviseTag = MPushButton(text=u'修改').primary() self.btn_reviseTag.setFixedWidth(80) self.let_tag.set_suffix_widget(self.btn_reviseTag) self.widget_2.layout().addWidget(self.let_tag) self.btn_export = MPushButton(u'导出到houdini').primary() self.widget_2.layout().addWidget(self.btn_export) self.btn_exportToMaya = MPushButton(u'导出到Maya').primary() self.widget_2.layout().addWidget(self.btn_exportToMaya) self.timer = QTimer() self.timer.setInterval(0.1) self.timer.timeout.connect(self.slot_timeout) self.auto_color_progress = MProgressBar().auto_color() self.widget_2.layout().addWidget(self.auto_color_progress) self.widget_4.layout().addWidget(MDivider(u'操作记录')) self.setWindowTitle(u"参数面板") # #获取控件 self.tableWidget_operationNote = self.ui.findChild( QTableWidget, "tableWidget_operationNote") self.tableWidget_operationNote.setStyleSheet(Data.getQSS()) #设置默认值 self.let_filename.setReadOnly(True) #只读 self.let_path.setReadOnly(True) #只读 self.let_tag.setReadOnly(True) #只读 self.tableWidget_operationNote.setHorizontalHeaderLabels( [u'用户', u'操作', u'时间']) # #连接信号与槽 self.btn_export.clicked.connect(self.slot_run) self.btn_reviseTag.clicked.connect(lambda: self.reviseTag()) # self.tableWidget_operationNote.setColumnCount(3) setSectionResizeMode(self.tableWidget_operationNote.horizontalHeader(), QHeaderView.Stretch) # 自适应