def __init__(self, parent, f=Qt.WindowCloseButtonHint):
super(DirectDownload, self).__init__(parent, f)
self.parent = parent
self.setWindowTitle('Download Progress')
self.setWindowModality(Qt.ApplicationModal)
self.setMinimumWidth(485)
self.setContentsMargins(20, 20, 20, 20)
layout = QVBoxLayout()
self.progress_label = QLabel(alignment=Qt.AlignCenter)
self.progress = QProgressBar(self.parent)
self.progress.setMinimum(0)
self.progress.setMaximum(100)
layout.addWidget(self.progress_label)
layout.addWidget(self.progress)
self.setLayout(layout)
python类ApplicationModal()的实例源码
def __init__(self, parent, f=Qt.WindowCloseButtonHint):
super(HosterLinks, self).__init__(parent, f)
self.parent = parent
self.setObjectName('hosters')
self.loading_progress = QProgressDialog('Retrieving hoster links...', None, 0, 0, self.parent,
Qt.WindowCloseButtonHint)
self.loading_progress.setStyle(QStyleFactory.create('Fusion'))
self.loading_progress.setWindowTitle('Hoster Links')
self.loading_progress.setMinimumWidth(485)
self.loading_progress.setWindowModality(Qt.ApplicationModal)
self.loading_progress.setStyleSheet('QProgressDialog::chunk { background-color:#6A687D; }')
self.loading_progress.show()
self.layout = QVBoxLayout()
self.layout.setSpacing(15)
self.setLayout(self.layout)
self.setWindowTitle('Hoster Links')
self.setWindowModality(Qt.ApplicationModal)
self.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)
def __init__(self, parent, settings: QSettings, f=Qt.WindowCloseButtonHint):
super(Settings, self).__init__(parent, f)
self.parent = parent
self.settings = settings
self.setWindowModality(Qt.ApplicationModal)
self.tab_general = GeneralTab(self.settings)
self.tab_favorites = FavoritesTab(self.settings)
tabs = QTabWidget()
tabs.addTab(self.tab_general, 'General')
tabs.addTab(self.tab_favorites, 'Favorites')
button_box = QDialogButtonBox(QDialogButtonBox.Save | QDialogButtonBox.Cancel, Qt.Horizontal, self)
button_box.accepted.connect(self.save_settings)
button_box.rejected.connect(self.close)
layout = QVBoxLayout()
layout.addWidget(tabs)
layout.addWidget(button_box)
self.setLayout(layout)
self.setWindowTitle('%s Settings' % qApp.applicationName())
self.setWindowIcon(self.parent.icon_settings)
def progress_start(title: str = '', length: int = 100, label: str = ''):
MainUiProgress.progress = QProgressDialog()
MainUiProgress.progress.setWindowFlags(Qt.FramelessWindowHint)
MainUiProgress.progress.setWindowFlags(Qt.WindowTitleHint)
MainUiProgress.progress.setMinimumWidth(400)
from PyQt5.QtWidgets import QPushButton
# QString() seems to be deprecated in v5
# PyQt does not support setCancelButton(0) as it expects a QPushButton instance
# Get your shit together, Qt !
MainUiProgress.progress.findChild(QPushButton).hide()
MainUiProgress.progress.setMinimumDuration(1)
MainUiProgress.progress.setWindowModality(Qt.ApplicationModal)
MainUiProgress.progress.setCancelButtonText('')
MainUiProgress.progress.setWindowIcon(QIcon(':/ico/app.ico'))
MainUiProgress.progress.setWindowTitle(title)
MainUiProgress.progress.setLabelText(label)
MainUiProgress.progress.setMaximum(length)
MainUiProgress.progress.show()
def __init__(self, parent=None, flags=Qt.Dialog | Qt.FramelessWindowHint):
super(VCProgressBar, self).__init__(parent, flags)
self.parent = parent
self.setWindowModality(Qt.ApplicationModal)
self.setStyleSheet('QDialog { border: 2px solid #000; }')
self._progress = QProgressBar(self)
self._progress.setRange(0, 0)
self._progress.setTextVisible(False)
self._progress.setStyle(QStyleFactory.create('Fusion'))
self._label = QLabel(self)
self._label.setAlignment(Qt.AlignCenter)
layout = QGridLayout()
layout.addWidget(self._progress, 0, 0)
layout.addWidget(self._label, 0, 0)
self._timerprefix = QLabel('<b>Elapsed time:</b>', self)
self._timerprefix.setObjectName('progresstimer')
self._timervalue = QLabel(self)
self._timervalue.setObjectName('progresstimer')
timerlayout = QHBoxLayout()
timerlayout.addWidget(self._timerprefix)
timerlayout.addWidget(self._timervalue)
self._timerwidget = QWidget(self)
self._timerwidget.setLayout(timerlayout)
self._timerwidget.hide()
self._time = QTime()
self._timer = QTimer(self)
self._timer.timeout.connect(self.updateTimer)
self.setLayout(layout)
self.setFixedWidth(550)
def __init__(self, icon: str, parent=None, f=Qt.Dialog | Qt.FramelessWindowHint):
super(Notification, self).__init__(parent, f)
self.parent = parent
self.theme = self.parent.theme
self.setObjectName('notification')
self.setContentsMargins(10, 10, 10, 10)
self.shown.connect(lambda: QTimer.singleShot(self.duration * 1000, self.fadeOut))
self.setWindowModality(Qt.ApplicationModal)
self.setMinimumWidth(550)
self._title, self._message = '', ''
self.buttons = []
self.msgLabel = QLabel(self._message, self)
self.msgLabel.setWordWrap(True)
logo_label = QLabel('<img src="{}" width="82" />'.format(icon), self)
logo_label.setFixedSize(82, 82)
self.left_layout = QVBoxLayout()
self.left_layout.addWidget(logo_label)
layout = QHBoxLayout()
layout.addStretch(1)
layout.addLayout(self.left_layout)
layout.addSpacing(10)
layout.addWidget(self.msgLabel, Qt.AlignVCenter)
layout.addStretch(1)
self.setLayout(layout)
def conflict_tags_submit(self):
"""
submit conflict tags
:return:
"""
updata_tag_message_list = self.get_table_data()
again_conflict_data = self.get_conflict_data(updata_tag_message_list)
self.wait_dialog = WaitDialog(self)
self.wait_dialog.setWindowModality(Qt.ApplicationModal)
if again_conflict_data:
message = str(again_conflict_data) + " has existed, whether to continue to submit"
reply = QMessageBox.information(self, "merge conflicts", message, QMessageBox.Yes | QMessageBox.No)
if reply == QMessageBox.Yes:
self.wait_dialog.show()
thread = Thread(target=self.case_data_manager.merge_conflict_data_callback,
args=(updata_tag_message_list, self.callback))
thread.start()
else:
self.wait_dialog.show()
thread = Thread(target=self.case_data_manager.merge_conflict_data_callback,
args=(updata_tag_message_list, self.callback))
thread.start()
def __init__(self, parent=None, theme: str='light', title: str='Checking for updates',
flags=Qt.Dialog | Qt.WindowCloseButtonHint):
super(UpdaterMsgBox, self).__init__(parent, flags)
self.parent = parent
self.theme = theme
self.setWindowTitle(title)
self.setWindowModality(Qt.ApplicationModal)
self.setObjectName('updaterdialog')
self.loading = VCProgressBar(self.parent)
self.loading.setText('contacting server')
self.loading.setMinimumWidth(485)
self.loading.show()
def __init__(self, errors: list, parent=None, flags=Qt.WindowCloseButtonHint):
super(ClipErrorsDialog, self).__init__(parent, flags)
self.errors = errors
self.parent = parent
self.setWindowModality(Qt.ApplicationModal)
self.setWindowTitle('Cannot add media file(s)')
self.headingcolor = '#C681D5' if self.parent.theme == 'dark' else '#642C68'
self.pencolor = '#FFF' if self.parent.theme == 'dark' else '#222'
self.toolbox = ClipErrorsDialog.VCToolBox(self)
self.toolbox.currentChanged.connect(self.selectItem)
self.detailedLabel = QLabel(self)
self.buttons = QDialogButtonBox(self)
closebutton = self.buttons.addButton(QDialogButtonBox.Close)
closebutton.clicked.connect(self.close)
closebutton.setDefault(True)
closebutton.setAutoDefault(True)
closebutton.setCursor(Qt.PointingHandCursor)
closebutton.setFocus()
introLabel = self.intro()
introLabel.setWordWrap(True)
layout = QVBoxLayout()
layout.addWidget(introLabel)
layout.addSpacing(10)
layout.addWidget(self.toolbox)
layout.addSpacing(10)
layout.addWidget(self.buttons)
self.setLayout(layout)
self.parseErrors()
def click_add_case(self):
"""
click the button to show add case widget
:return:
"""
self.add_case_widget = AddCaseWidget()
self.add_case_widget.select_case_signal.connect(self.show_cases, Qt.QueuedConnection)
self.add_case_widget.setWindowModality(Qt.ApplicationModal)
self.add_case_widget.show()
def click_run_stop_btn(self):
"""
start or stop to run case
:return:
"""
devices = []
if self.running:
self.stop_case()
return
if not self.cases: # cases is null
self.message_box.warning(self, "Message", "Please add cases first.", QMessageBox.Ok)
return
try:
devices = self.tester.devices()
except Exception as e:
self.add_log("<font color='red'>" + str(e) + "</font>")
if not devices: # There is no device connected
self.message_box.warning(self, "Message", "Please connect the device to your computer.", QMessageBox.Ok)
return
self.add_device_widget = AddDeviceWidget()
self.add_device_widget.setWindowModality(Qt.ApplicationModal)
self.add_device_widget.add_log_signal.connect(self.add_log, Qt.QueuedConnection)
self.add_device_widget.run_case_signal.connect(self.run_case, Qt.QueuedConnection)
self.device_list_signal.connect(self.add_device_widget.add_radio_to_widget, Qt.QueuedConnection)
self.add_device_widget.show()
try:
self.device_list_signal.emit(devices)
except Exception as e:
self.add_log("<font color='red'><pre>" + str(e) + "</pre></font>")
def table_widget_clicked(self, row, column):
table_item = self.table_widget.item(row, column)
if row == 0: # ?????
self.data_header_editor = DataHeaderQWidget(self.refresh_table_item_signal,
row, column, table_item.text())
self.data_header_editor.setWindowModality(Qt.ApplicationModal)
self.data_header_editor.show()
else: # ????
self.data_editor = DataEditorQWidget(self.refresh_table_item_signal,
row, column, table_item.text())
self.data_editor.setWindowModality(Qt.ApplicationModal)
self.data_editor.show()
def add_tag(self):
'''
add tag
:return:
'''
self.tag_editor_window = TagEditorWidget(self.refresh_signal)
self.tag_editor_window.setWindowModality(Qt.ApplicationModal)
self.tag_editor_window.show()
def modify_tag(self):
items = self.tag_list_widget.selectedItems()
item = items[0]
if item.text() == '??' or item.text() == '???':
QMessageBox.warning(self, 'tag select ', 'please select a tag')
else:
self.tag_editor_window = TagEditorWidget(self.refresh_signal, item.text())
self.tag_editor_window.setWindowModality(Qt.ApplicationModal)
self.tag_editor_window.show()
def choose_event(self):
"""
choose tag event, show tags
:return:
"""
self.tag_manage_widget = TagManageWidget(self.config)
self.tag_manage_widget.selected_tag_names_signal.connect(self.set_selected_tag_names)
self.tag_manage_widget.setWindowModality(Qt.ApplicationModal)
self.tag_manage_widget.show()
def run_btn_event(self):
"""
click run button, show add_device_widget
:return:
"""
self.add_device_widget = AddDeviceWidget() # add device
self.add_device_widget.setWindowModality(Qt.ApplicationModal)
self.device_and_data_signal.connect(self.add_device_widget.add_radio_to_widget, Qt.QueuedConnection)
self.add_device_widget.run_editor_signal.connect(self.run_case, Qt.QueuedConnection)
devices = []
if self.is_running:
self.stop_case()
try:
devices = self.tester.devices()
except Exception as e:
self.add_info_console("<font color='red'>" + str(e) + "</font>")
if not devices: # There is no device connected
self.message_box.warning(self, "Message", "Please connect the device to your computer.", QMessageBox.Ok)
return
# get case data count
if self.case_id is not None:
self.case_data_count = self.case_data_manage.get_case_data_count(self.case_id)
self.device_and_data_signal.emit(devices, self.case_data_count)
self.add_device_widget.show()
def new_tag_event(self):
"""
show tag editor
:return:
"""
self.tag_editor = TagEditorWidget(self.refresh_signal)
self.tag_editor.setWindowModality(Qt.ApplicationModal)
self.tag_editor.show()
def __init__(self, media, parent=None, flags=Qt.Dialog | Qt.WindowCloseButtonHint):
super(VideoInfo, self).__init__(parent, flags)
self.logger = logging.getLogger(__name__)
self.media = media
self.parent = parent
self.setObjectName('videoinfo')
self.setContentsMargins(0, 0, 0, 0)
self.setWindowModality(Qt.ApplicationModal)
self.setWindowTitle('Media information - {}'.format(os.path.basename(self.media)))
self.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
self.setMinimumSize(self.modes.get(self.parent.parent.scale))
metadata = '''<style>
table {
font-family: "Noto Sans UI", sans-serif;
font-size: 13px;
margin-top: -10px;
}
td i {
font-family: "Noto Sans UI", sans-serif;
font-weight: normal;
font-style: normal;
text-align: right;
color: %s;
white-space: nowrap;
}
td {
font-weight: normal;
text-align: right;
}
td + td { text-align: left; }
h1, h2, h3 { color: %s; }
</style>
<div align="center">%s</div>''' % ('#C681D5' if self.parent.theme == 'dark' else '#642C68',
'#C681D5' if self.parent.theme == 'dark' else '#642C68',
self.parent.videoService.mediainfo(self.media))
content = QTextBrowser(self.parent)
content.setStyleSheet('QTextBrowser { border: none; background-color: transparent; }')
content.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
content.setHtml(metadata)
keyframesButton = QPushButton('View keyframes', self)
keyframesButton.clicked.connect(self.showKeyframes)
okButton = QDialogButtonBox(QDialogButtonBox.Ok)
okButton.accepted.connect(self.close)
button_layout = QHBoxLayout()
mediainfo_version = self.parent.videoService.cmdExec(self.parent.videoService.backends.mediainfo,
'--version', True)
if len(mediainfo_version) >= 2:
mediainfo_version = mediainfo_version.split('\n')[1]
mediainfo_label = QLabel('<div style="font-size:11px;"><b>Media information by:</b><br/>%s @ '
% mediainfo_version + '<a href="https://mediaarea.net" target="_blank">' +
'mediaarea.net</a></div>')
button_layout.addWidget(mediainfo_label)
button_layout.addStretch(1)
button_layout.addWidget(keyframesButton)
button_layout.addWidget(okButton)
layout = QVBoxLayout()
layout.addWidget(content)
layout.addLayout(button_layout)
self.setLayout(layout)
def help_dialog(self):
self.helpDialog = QDialog()
self.helpDialog.setObjectName("self.helpDialog")
self.helpDialog.setWindowModality(Qt.ApplicationModal)
self.helpDialog.setFixedSize(362, 151)
icon = QIcon()
icon.addPixmap(QPixmap("../resource/logo.png"), QIcon.Normal, QIcon.Off)
self.helpDialog.setWindowIcon(icon)
self.helpDialog.setLayoutDirection(Qt.LeftToRight)
self.helpDialog.setAutoFillBackground(False)
self.helpDialog.setSizeGripEnabled(False)
self.helpDialog.setModal(False)
self.docButton = QPushButton(self.helpDialog)
self.docButton.setGeometry(QRect(200, 100, 111, 41))
icon1 = QIcon()
icon1.addPixmap(QPixmap("../resource/Doc.png"), QIcon.Normal, QIcon.Off)
self.docButton.setIcon(icon1)
self.docButton.setObjectName("docButton")
self.tubeButton = QPushButton(self.helpDialog)
self.tubeButton.setGeometry(QRect(50, 100, 111, 41))
icon2 = QIcon()
icon2.addPixmap(QPixmap("../resource/YouTube.png"), QIcon.Normal, QIcon.Off)
self.tubeButton.setIcon(icon2)
self.tubeButton.setObjectName("tubeButton")
self.label = QLabel(self.helpDialog)
self.label.setGeometry(QRect(20, 10, 331, 21))
font = QFont()
font.setPointSize(12)
self.label.setFont(font)
self.label.setObjectName("label")
self.label_2 = QLabel(self.helpDialog)
self.label_2.setGeometry(QRect(20, 30, 321, 21))
font = QFont()
font.setPointSize(12)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.label_3 = QLabel(self.helpDialog)
self.label_3.setGeometry(QRect(20, 50, 321, 20))
font = QFont()
font.setPointSize(12)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.label_4 = QLabel(self.helpDialog)
self.label_4.setGeometry(QRect(30, 80, 211, 17))
font = QFont()
font.setPointSize(8)
font.setItalic(True)
self.label_4.setFont(font)
self.label_4.setObjectName("label_4")
self.retranslate_help_ui(self.helpDialog)
QMetaObject.connectSlotsByName(self.helpDialog)
self.docButton.clicked.connect(self.open_github)
self.helpDialog.exec_()
#help_dialog calls this inturn to set some labels messages