Python PyQt5.QtGui 模块,QKeySequence() 实例源码
我们从Python开源项目中,提取了以下43个代码示例,用于说明如何使用PyQt5.QtGui.QKeySequence()。
def setGraphView(self, graphView):
self.graphView = graphView
# Setup Layout
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.graphView)
self.setLayout(layout)
# Setup hotkeys for the following actions.
deleteShortcut = QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Delete), self)
deleteShortcut.activated.connect(self.graphView.deleteSelectednodes)
frameShortcut = QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_F), self)
frameShortcut.activated.connect(self.graphView.frameSelectednodes)
frameShortcut = QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_A), self)
frameShortcut.activated.connect(self.graphView.frameAllNodes)
def qui_menu(self, action_list_str, menu_str):
# qui menu creation
# Syntax: self.qui_menu('right_menu_createFolder_atn;Create Folder,Ctrl+D | right_menu_openFolder_atn;Open Folder','right_menu')
if menu_str not in self.uiList.keys():
self.uiList[menu_str] = QtWidgets.QMenu()
create_opt_list = [ x.strip() for x in action_list_str.split('|') ]
for each_creation in create_opt_list:
ui_info = [ x.strip() for x in each_creation.split(';') ]
atn_name = ui_info[0]
atn_title = ''
atn_hotkey = ''
if len(ui_info) > 1:
options = ui_info[1].split(',')
atn_title = '' if len(options) < 1 else options[0]
atn_hotkey = '' if len(options) < 2 else options[1]
if atn_name != '':
if atn_name == '_':
self.uiList[menu_str].addSeparator()
else:
if atn_name not in self.uiList.keys():
self.uiList[atn_name] = QtWidgets.QAction(atn_title, self)
if atn_hotkey != '':
self.uiList[atn_name].setShortcut(QtGui.QKeySequence(atn_hotkey))
self.uiList[menu_str].addAction(self.uiList[atn_name])
def setupMenu(self):
self.quickMenu(['file_menu;&File','setting_menu;&Setting','help_menu;&Help'])
cur_menu = self.uiList['setting_menu']
self.quickMenuAction('setParaA_atn','Set Parameter &A','A example of tip notice.','setParaA.png', cur_menu)
self.uiList['setParaA_atn'].setShortcut(QtGui.QKeySequence("Ctrl+R"))
cur_menu.addSeparator()
if 'help_menu' in self.uiList.keys():
# for info review
cur_menu = self.uiList['help_menu']
self.quickMenuAction('helpHostMode_atnNone','Host Mode - {}'.format(hostMode),'Host Running.','', cur_menu)
self.quickMenuAction('helpPyMode_atnNone','Python Mode - {}'.format(pyMode),'Python Library Running.', cur_menu)
self.quickMenuAction('helpQtMode_atnNone','Qt Mode - {}'.format(qtModeList[qtMode]),'Qt Library Running.', cur_menu)
self.quickMenuAction('helpTemplate_atnNone','Universal Tool Teamplate - {}'.format(tpl_ver),'based on Univeral Tool Template v{0} by Shining Ying - https://github.com/shiningdesign/universal{1}tool{1}template.py'.format(tpl_ver,'_'), cur_menu)
cur_menu.addSeparator()
self.uiList['helpGuide_msg'] = self.help
self.quickMenuAction('helpGuide_atnMsg','Usage Guide','How to Usge Guide.','helpGuide.png', cur_menu)
def __init__(self, mainWindow):
super().__init__(mainWindow, "choose a dynamic")
button = QtWidgets.QPushButton("[r] Ramp")
button.setShortcut(QtGui.QKeySequence("r"))
self.layout.addWidget(button)
button.clicked.connect(api.insertDynamicRamp)
button.clicked.connect(self.done)
l = [("[{}] {}".format(num+1, keyword), lambda r, keyword=keyword: api.insertDynamicSignature(keyword)) for num, keyword in enumerate(constantsAndConfigs.dynamics)]
for number, (prettyname, function) in enumerate(l):
button = QtWidgets.QPushButton(prettyname)
button.setShortcut(QtGui.QKeySequence(str(number+1)))
self.layout.addWidget(button)
button.clicked.connect(function)
button.clicked.connect(self.done)
def __setitem__(self, key, menuAction):
try:
self[key].setShortcut(QtGui.QKeySequence()) #reset the action that prevIoUsly had that shortcut
except AttributeError:
pass
if self.mainWindow.settings.contains(menuAction.shortcut().toString()): #"Num+3"
self.mainWindow.settings.remove(menuAction.shortcut().toString())
self.mainWindow.settings.remove("Num+"+key) #"Num+3"
try:
dict.__setitem__(self, menuAction.shortcut().toString()[-1], None) #-1 is a number as string
except IndexError:
pass
menuAction.setShortcut(QtGui.QKeySequence()) #reset the new action to remove existing shortcuts
menuAction.setShortcut(QtGui.QKeySequence(self.qShortcuts[key]))
self.mainWindow.settings.setValue("Num+"+key, menuAction.text())
dict.__setitem__(self, menuAction)
def __init__(self, parent=None):
super().__init__(parent)
self.verticalHeader().setSectionResizeMode(QHeaderView.Fixed)
self.horizontalHeader().setSectionResizeMode(QHeaderView.Fixed)
self.ref_message_action = QAction(self.tr("Mark as reference message"), self)
self.ref_message_action.setShortcut(QKeySequence("R"))
self.ref_message_action.setShortcutContext(Qt.WidgetWithChildrenShortcut)
self.ref_message_action.triggered.connect(self.set_ref_message)
self.hide_row_action = QAction("Hide selected rows", self)
self.hide_row_action.setShortcut(QKeySequence("H"))
self.hide_row_action.setShortcutContext(Qt.WidgetWithChildrenShortcut)
self.hide_row_action.triggered.connect(self.hide_row)
self.addAction(self.ref_message_action)
self.addAction(self.hide_row_action)
def create_action(self, text=None, slot=None, tip=None, shortcut=None):
"""
This create actions for the File menu,things like
Read Corpus,Rerun Corpus etc
"""
action = QAction(text, self)
if shortcut:
action.setShortcut(shortcut)
if tip:
action.setToolTip(tip)
action.setStatusTip(tip)
if slot:
# noinspection PyUnresolvedReferences
action.triggered.connect(slot)
if shortcut:
# noinspection PyUnresolvedReferences
QShortcut(QKeySequence(shortcut), self).activated.connect(slot)
return action
def __init__(self):
self.version = 100 # Assume oldest config
self.root_dir = QDir().currentPath()
self.send_sleep = 0.1
self.read_sleep = 0.1
self.use_transfer_scripts = True
self.external_transfer_scripts_folder = None
self.wifi_presets = []
self.python_flash_executable = None
self.last_firmware_directory = None
self.debug_mode = False
self._geometries = {}
self.external_editor_path = None
self.external_editor_args = None
self.new_line_key = QKeySequence(Qt.SHIFT + Qt.Key_Return, Qt.SHIFT + Qt.Key_Enter)
self.send_key = QKeySequence(Qt.Key_Return, Qt.Key_Enter)
self.terminal_tab_spaces = 4
self.mpy_cross_path = None
self.preferred_port = None
self.auto_transfer = False
if not self.load():
if not self.load_old():
# No config found,init at newest version
self.version = Settings.newest_version
return
self._update_config()
def serialize(self):
serialized = {}
for key, val in self.__dict__.items():
if isinstance(val, QKeySequence):
val = val.toString()
serialized[key] = val
return serialized
def deserialize(self, serialized):
deserialized = {}
for key, val in serialized.items():
if key == "new_line_key" or key == "send_key":
val = QKeySequence(val)
deserialized[key] = val
return deserialized
def _slotValueChanged(self, property, val):
if type(val)==QKeySequence:
raise NotImplementedError
self._valueChanged(property, QVariant(val))
def __init__(self):
# Fucking QMainWindow calls a general super().__init__ on every parent class,don't call them here !
flags = Qt.WindowTitleHint | Qt.WindowSystemMenuHint | Qt.WindowCloseButtonHint
flags = flags | Qt.WindowMinimizeButtonHint | Qt.WindowMaximizeButtonHint
self.helpers = {}
QMainWindow.__init__(
self,
flags=flags
)
self.resize(1024, 768)
self.tabs = TabWidget()
layout = VLayout(
[
self.tabs
]
)
layout.setContentsMargins(10, 10, 10)
window = Widget()
window.setLayout(layout)
self.setCentralWidget(window)
self.setwindowIcon(QIcon(constant.DEFAULT_ICON))
self.exit_shortcut = Shortcut(QKeySequence(Qt.Key_Escape), self, self.exit)
self.setwindowTitle(
'{} v{} - {}'.format(constant.APP_SHORT_NAME,
__version__,
constant.APP_RELEASE_NAME))
def __init__(self, key_sequence: QKeySequence, parent: QWidget, func: callable):
QShortcut.__init__(self, key_sequence, parent)
# noinspection PyUnresolvedReferences
self.activated.connect(func)
def keyPressEvent(self, event):
k = event.key()
m = int(event.modifiers())
if QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+N'):
self.frame_panel.next_frame()
elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+P'):
self.frame_panel.prev_frame()
elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+R'):
self.frame_panel.rand_frame()
elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+Q'):
self.close()
else:
event.ignore()
def keyPressEvent(self, event):
k = event.key()
m = int(event.modifiers())
if QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+N'):
self.frame_panel.next_frame()
elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+P'):
self.frame_panel.prev_frame()
elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+R'):
self.frame_panel.rand_frame()
elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+Q'):
self.close()
else:
event.ignore()
def keyPressEvent(self, event):
k = event.key()
m = int(event.modifiers())
if k == QtCore.Qt.Key_Return or k == QtCore.Qt.Key_Enter:
self.parse_and_plot()
elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+Q'):
self.close()
elif QtGui.QKeySequence(m+k) == QtGui.QKeySequence('Ctrl+S'):
self.save_plot()
else:
event.ignore()
def qui_atn(self, ui_name, title, icon=None, parent=None, key=None):
self.uiList[ui_name] = QtWidgets.QAction(title, self)
if icon!=None:
self.uiList[ui_name].setIcon(QtGui.QIcon(icon))
if tip !=None:
self.uiList[ui_name].setStatusTip(tip)
if key != None:
self.uiList[ui_name].setShortcut(QtGui.QKeySequence(key))
if parent !=None:
if isinstance(parent, (str, unicode)) and parent in self.uiList.keys():
self.uiList[parent].addAction(self.uiList[ui_name])
elif isinstance(parent, QtWidgets.QMenu):
parent.addAction(self.uiList[ui_name])
return ui_name
def qui_key(self, key_name, key_combo, func):
self.hotkey[key_name] = QtWidgets.QShortcut(QtGui.QKeySequence(key_combo), self)
self.hotkey[key_name].activated.connect( func )
def setupMenu(self):
self.quickMenu('file_menu;&File | setting_menu;&Setting | help_menu;&Help')
cur_menu = self.uiList['setting_menu']
for info in ['export', 'import','user']:
title = info.title()
self.quickMenuAction('{0}Config_atn'.format(info),'{0} Config (&{1})'.format(title,title[0]),'{0} Setting and Configuration.'.format(title),'{0}Config.png'.format(info), cur_menu)
self.uiList['{0}Config_atn'.format(info)].setShortcut(QtGui.QKeySequence("Ctrl+{0}".format(title[0])))
cur_menu.addSeparator()
super(self.__class__,self).setupMenu()
def Establish_Connections(self):
super(self.__class__,self).Establish_Connections()
# custom ui response
# shortcut connection
self.hotkey = {}
# self.hotkey['my_key'] = QtWidgets.QShortcut(QtGui.QKeySequence( "Ctrl+1" ),self)
# self.hotkey['my_key'].activated.connect(self.my_key_func)
# ---- user response list ----
def setupMenu(self):
self.quickMenu('file_menu;&File | setting_menu;&Setting | help_menu;&Help')
cur_menu = self.uiList['setting_menu']
for info in ['export', 'import']:
title = info.title()
self.quickMenuAction('{0}Config_atn'.format(info),self).setupMenu()
def Establish_Connections(self):
super(self.__class__,self)
# self.hotkey['my_key'].activated.connect(self.my_key_func)
# ---- user response list ----
def Establish_Connections(self):
super(self.__class__,self)
# self.hotkey['my_key'].activated.connect(self.my_key_func)
# ---- user response list ----
def setupMenu(self):
self.quickMenu('file_menu;&File | setting_menu;&Setting | help_menu;&Help')
cur_menu = self.uiList['setting_menu']
for info in ['export',self).setupMenu()
def setupMenu(self):
self.quickMenu(['file_menu;&File',self).setupMenu()
def setupMenu(self):
self.quickMenu(['file_menu;&File', cur_menu)
self.uiList['setParaA_atn'].setShortcut(QtGui.QKeySequence("Ctrl+R"))
cur_menu.addSeparator()
# for info review
cur_menu = self.uiList['help_menu']
self.quickMenuAction('helpHostMode_atnNone', cur_menu)
self.quickMenuAction('helpPyMode_atnNone', cur_menu)
self.quickMenuAction('helpQtMode_atnNone', cur_menu)
self.quickMenuAction('helpTemplate_atnNone','based on Univeral Tool Template v{} by Shining Ying - https://github.com/shiningdesign/universal_tool_template.py'.format(tpl_ver), cur_menu)
cur_menu.addSeparator()
self.uiList['helpGuide_msg'] = "How to Use:\n1. Put source info in\n2. Click Process button\n3. Check result output\n4. Save memory info into a file."
self.quickMenuAction('helpGuide_atnMsg', cur_menu)
def setupMenu(self):
self.quickMenu('file_menu;&File | setting_menu;&Setting | help_menu;&Help')
cur_menu = self.uiList['setting_menu']
for info in ['export',self).setupMenu()
def Establish_Connections(self):
super(self.__class__,self)
# self.hotkey['my_key'].activated.connect(self.my_key_func)
# ---- user response list ----
def __init__(self, "choose a clef")
for number, function) in enumerate(SecondaryClefMenu.clefs):
button = QtWidgets.QPushButton(prettyname)
button.setShortcut(QtGui.QKeySequence(str(number+1)))
self.layout.addWidget(button)
button.clicked.connect(function)
button.clicked.connect(self.done)
def __init__(self, "split chord in")
for number, function) in enumerate(SecondarySplitMenu.splits):
button = QtWidgets.QPushButton(prettyname)
button.setShortcut(QtGui.QKeySequence(str(number+2))) #+1 for enumerate from 0,+2 we start at 2.
self.layout.addWidget(button)
button.clicked.connect(function)
button.clicked.connect(self.done)
def __init__(self, "root note is the cursor position")
l = [("[{}] {}".format(num+1, modeString.title()), modeString=modeString: api.insertCursorCommonKeySignature(modeString)) for num, modeString in enumerate(api.commonKeySignaturesAsList())]
for number, function) in enumerate(l):
button = QtWidgets.QPushButton(prettyname)
button.setShortcut(QtGui.QKeySequence(str(number+1)))
self.layout.addWidget(button)
button.clicked.connect(function)
button.clicked.connect(self.done)
def __init__(self, "choose a metrical instruction")
l = [("[{}] {}".format(num+1, modeString), modeString=modeString: api.insertCommonMetricalInstrucions(modeString)) for num, modeString in enumerate(api.commonMetricalInstructionsAsList())]
for number, function) in enumerate(l):
button = QtWidgets.QPushButton(prettyname)
button.setShortcut(QtGui.QKeySequence(str(number+1)))
self.layout.addWidget(button)
button.clicked.connect(function)
button.clicked.connect(self.done)
def createMenubar(self):
self.CreateAction('openfromfile', self.HandleOpenFromFile, None,
'Open Level by File...', 'Open a level based on its filename',
QtGui.QKeySequence('Ctrl+Shift+O'))
self.CreateAction('save', self.HandleSaveAs, 'Save Level As',
'Save the level with a new filename', QtGui.QKeySequence.Save)
menubar = QtWidgets.QMenuBar()
self.setMenuBar(menubar)
fmenu = menubar.addMenu('&File')
fmenu.addAction(self.actions['openfromfile'])
fmenu.addSeparator()
fmenu.addAction(self.actions['save'])
def setEscKey(window):
window.shortcut = QShortcut(QKeySequence(Qt.Key_Escape), window)
window.shortcut.activated.connect(lambda: QApplication.quit())
def setupUi(self):
self.setobjectName("Dialog")
self.resize(355, 76)
self.buttonBox = QtWidgets.QDialogButtonBox(self)
self.buttonBox.setGeometry(QtCore.QRect(0, 40, 341, 32))
self.buttonBox.setorientation(QtCore.Qt.Horizontal)
font8 = QtGui.QFont('Courier New',8)
self.buttonBox.addButton('Find (Enter)',QtWidgets.QDialogButtonBox.AcceptRole)
self.findnext_Btn = self.buttonBox.addButton('Find next (F3)',QtWidgets.QDialogButtonBox.ApplyRole)
self.buttonBox.addButton('Cancel',QtWidgets.QDialogButtonBox.RejectRole)
self.buttonBox.setobjectName("buttonBox")
self.lineEdit_search = QtWidgets.QLineEdit(self)
self.lineEdit_search.setGeometry(QtCore.QRect(100, 221, 20))
self.lineEdit_search.setobjectName("lineEdit_search")
self.lineEdit_search.setFont(font8)
self.lineEdit_search.setClearButtonEnabled(True)
self.label = QtWidgets.QLabel(self)
self.label.setGeometry(QtCore.QRect(10, 71, 16))
self.label.setobjectName("label")
self.lineEdit_search.setText('search here')
self.retranslateUi()
#button clicks events
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.findnext_Btn.clicked.connect(self.acceptNext)
# shortcut = QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_F3),self)
# # shortcut = QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_F3),self,QtCore.SLOT(self.acceptNext))
# self.setShortcutEnabled(shortcut.id(),True)
# findNext_ = QtWidgets.QAction('&FindNext',self)
# findNext_.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_F3))
# findNext_.triggered.connect(self.acceptNext)
find_ = QtWidgets.QAction('&Find', self)
find_.setShortcut(self.tr("Enter"))
find_.triggered.connect(self.accept)
QtCore.QMetaObject.connectSlotsByName(self)
self.setTabOrder(self.lineEdit_search, self.findnext_Btn)
self.setTabOrder(self.findnext_Btn, self.buttonBox)
# def exec(self):
# return 1
def __init__(self, window_width=1000, window_height=950):
super().__init__()
# Initialize Plain Text Widget
self.text_widget = QtWidgets.QPlainTextEdit()
# Default Mode to Insertion
self.insert = True
# EventFilter FocusOut
self._filter = Filter()
# Setup Shortcuts
self.shift_tab = QtWidgets.QShortcut(QtGui.QKeySequence('Shift+Tab'), self)
#self.shift_tab.activated.setFocus()
# Default start up File
self.file_name = 'Untitled.txt'
self.file_path = ['/', '']
self.file_type = self.file_name.split('.')[-1]
self.Syntax = Highlighter.PythonHighlighter(self.text_widget.document())
self.assign_Syntax_def()
# Initialize Menus
self.menu_bar = self.menuBar()
self.file_menu()
self.edit_menu()
self.format_menu()
self.preferences_menu()
self.finder_toolbar()
# Set Default Pallete
self.default_visual()
# Initialize UI Related Properties
self.notepad_ui()
self.setCentralWidget(self.text_widget)
self.setwindowIcon(QtGui.QIcon('assets/icons/notepad.png'))
self.resize(window_width, window_height)
# Center the main window to the screen
self.center()
self.show()
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.tape = []
self.tape_pos = -1
self.style_sheet = None
self.search_bar = QLineEdit(self)
self.search_bar.textChanged.connect(self.onSearchTextChanged)
self.style_text_edit = QTextEdit(self)
self.style_text_edit.textChanged.connect(self.onStyleTextChanged)
# To prevent messing with contents when pasted from an IDE,for
# instance.
self.style_text_edit.setAcceptRichText(False)
self.apply_button = QPushButton('Apply', self)
self.apply_button.clicked.connect(self.onApplyButton)
layout = QVBoxLayout(self)
layout.addWidget(self.search_bar)
layout.addWidget(self.style_text_edit)
layout.addWidget(self.apply_button)
self.setLayout(layout)
next_hit_shortcut = QShortcut(QKeySequence(Qt.Key_F3), self)
next_hit_shortcut.activated.connect(self.onNextSearchHit)
search_shortcut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_F), self)
search_shortcut.activated.connect(self.onFocusSearchBar)
apply_shortcut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_S), self)
apply_shortcut.activated.connect(self.applyStyleSheet)
undo_shortcut = QShortcut(
QKeySequence(Qt.CTRL + Qt.ALT + Qt.Key_Z), self)
undo_shortcut.activated.connect(self.onUndo)
redo_shortcut = QShortcut(
QKeySequence(Qt.CTRL + Qt.ALT + Qt.Key_Y), self)
redo_shortcut.activated.connect(self.onRedo)
help_shortcut = QShortcut(
QKeySequence(Qt.Key_F1), self)
help_shortcut.activated.connect(self.onHelp)
self.loadStyleSheet()
def __init__(self):
super().__init__()
vBox = QtWidgets.QVBoxLayout()
self.setLayout(vBox)
# self.setMinimumWidth(180)
self.updating_gui_bool = False
self.list_widget = QtWidgets.QListWidget()
# self.list_widget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBaralwaysOn)
vBox.addWidget(self.list_widget)
self.list_widget.itemSelectionChanged.connect(self.on_selection_changed)
hBox = QtWidgets.QHBoxLayout()
vBox.addLayout(hBox)
self.add_to_list_qle = QtWidgets.QLineEdit()
hBox.addWidget(self.add_to_list_qle)
self.add_to_list_qle.setPlaceholderText("New item")
QtWidgets.QShortcut(
QtGui.QKeySequence(QtCore.Qt.Key_Return),
self.add_to_list_qle,
member=self.add_new_phrase_button_clicked,
context=QtCore.Qt.WidgetShortcut
)
self.add_new_phrase_qpb = QtWidgets.QPushButton("Add")
self.add_new_phrase_qpb.clicked.connect(self.add_new_phrase_button_clicked)
hBox.addWidget(self.add_new_phrase_qpb)
hBox = QtWidgets.QHBoxLayout()
vBox.addLayout(hBox)
self.edit_texts_qpb = QtWidgets.QPushButton()
hBox.addWidget(self.edit_texts_qpb)
self.edit_texts_qpb.setIcon(QtGui.QIcon(mc.mc_global.get_icon_path("pencil-2x.png")))
self.edit_texts_qpb.clicked.connect(self.on_edit_texts_clicked)
self.move_to_top_qpb = QtWidgets.QPushButton()
hBox.addWidget(self.move_to_top_qpb)
self.move_to_top_qpb.setIcon(QtGui.QIcon(mc.mc_global.get_icon_path("data-transfer-upload-2x.png")))
self.move_to_top_qpb.clicked.connect(self.on_move_to_top_clicked)
self.move_up_qpb = QtWidgets.QPushButton()
hBox.addWidget(self.move_up_qpb)
self.move_up_qpb.setIcon(QtGui.QIcon(mc.mc_global.get_icon_path("arrow-top-2x.png")))
self.move_up_qpb.clicked.connect(self.on_move_up_clicked)
self.move_down_qpb = QtWidgets.QPushButton()
hBox.addWidget(self.move_down_qpb)
self.move_down_qpb.setIcon(QtGui.QIcon(mc.mc_global.get_icon_path("arrow-bottom-2x.png")))
self.move_down_qpb.clicked.connect(self.on_move_down_clicked)
hBox.addStretch(1)
self.delete_phrase_qpb = QtWidgets.QPushButton()
hBox.addWidget(self.delete_phrase_qpb)
self.delete_phrase_qpb.setIcon(QtGui.QIcon(mc.mc_global.get_icon_path("trash-2x.png")))
self.delete_phrase_qpb.clicked.connect(self.on_delete_clicked)
self.update_gui()
self.list_widget.setCurrentRow(0) # -the first row
def _setup_hotkeys(self, action_map):
shortcuts = {}
def resolve_ambiguity(keys):
widget = QtWidgets.QApplication.focusWidget()
while widget:
if widget == self.audio:
shortcuts[keys].activated.emit()
widget = widget.parent()
for context, items in self._api.opt.hotkeys.items():
for item in items:
keys, cmd_name, *cmd_args = item
action = action_map.get((cmd_name, *cmd_args))
if action and context == 'global':
# add shortcut hint text to the buttons in the menu
action.setShortcut(QtGui.QKeySequence(keys))
# prevent the action from triggering any signal on pressing
# its shortcut. (the action is parent of the main window,
# and the main window widget can never have focus by
# itself.)
# basically,all hotkey triggers are to be handled by the
# QShortcut below.
action.setShortcutContext(QtCore.Qt.WidgetShortcut)
shortcut = QtWidgets.QShortcut(QtGui.QKeySequence(keys), self)
shortcuts[keys] = shortcut
shortcut.setContext(QtCore.Qt.WidgetWithChildrenShortcut)
shortcut.activated.connect(functools.partial(
self._api.cmd.run,
self._api.cmd.get(cmd_name, cmd_args)))
if context == 'audio':
shortcut.setParent(self.audio)
elif context != 'global':
raise RuntimeError('Invalid shortcut context')
# when the user focuses some widget X or its child,and presses
# a hotkey that's defined both for widget X and for the window,
# qt doesn't kNow whether the user meant to use global hotkey
# or the widget X hotkey since the focused widget is a
# descendant of both the widget X and the main window.
#
# in case a shortcut is ambiguous,qt invokes the ambiguous
# signals in turns each time user presses given shortcut.
if context == 'global':
# since ambiguous keypress happens only if user has
# actually focused an ambiguous widget X,in case when it
# is the main window that receives ambiguous trigger,the
# main window must pass the event to the widget X.
shortcut.activatedambiguously.connect(
functools.partial(resolve_ambiguity, keys))
else:
# in case where it is the ambiguous widget X that receives
# ambiguous trigger,it can just carry on with execution.
shortcut.activatedambiguously.connect(
shortcut.activated.emit)
def init_menu_file(self):
# Action ??
# ? ??
self.act_new_file = QAction(self)
self.act_new_file.setShortcut(QKeySequence('Ctrl+N'))
self.act_new_file.triggered.connect(lambda : self.sig_new_file.emit())
# self.act_new_file.triggered.emmit(self.slot_new)
# ??
self.act_open_file = QAction(self)
self.act_open_file.setShortcut(QKeySequence('Ctrl+O'))
self.act_open_file.triggered.connect(lambda : self.sig_open_file.emit())
# ??
self.act_save_file = QAction(self)
self.act_save_file.setShortcut(QKeySequence('Ctrl+S'))
self.act_save_file.triggered.connect(lambda : self.sig_save_file.emit())
# ?? ???? ??
self.act_save_as_file = QAction(self)
self.act_save_as_file.triggered.connect(self.slot_save_as)
# ??? ??
self.act_page_setup = QAction(self)
self.act_page_setup.setShortcut(QKeySequence('Ctrl+S'))
self.act_page_setup.triggered.connect(lambda : self.sig_page_setup.emit())
# ???
self.act_print = QAction(self)
self.act_print.setShortcut(QKeySequence('Ctrl+P'))
self.act_print.triggered.connect(lambda : self.sig_print.emit())
# ???
self.act_quit = QAction(self.tr('Exit') + "(&X)", self)
self.act_quit.triggered.connect(lambda : self.sig_exit.emit())
# ??? ?? ? ?? ??
# addAction? ??? ??
self.menu_file = self.addMenu(self.tr("File") + "(&F)")
self.menu_file.addAction(self.act_new_file)
self.menu_file.addAction(self.act_open_file)
self.menu_file.addAction(self.act_save_file)
self.menu_file.addAction(self.act_save_as_file)
self.menu_file.addSeparator()
self.menu_file.addAction(self.act_page_setup)
self.menu_file.addAction(self.act_print)
self.menu_file.addSeparator()
self.menu_file.addAction(self.act_quit)
def init_menu_edit(self):
# ????
self.act_undo = QAction(self)
self.act_undo.setShortcut(QKeySequence('Ctrl+Z'))
self.act_undo.triggered.connect(self.slot_undo)
# ????
self.act_cut = QAction(self)
self.act_cut.setShortcut(QKeySequence('Ctrl+X'))
self.act_cut.triggered.connect(self.slot_cut)
# ??
self.act_copy = QAction(self)
self.act_copy.setShortcut(QKeySequence('Ctrl+C'))
self.act_copy.triggered.connect(self.slot_copy)
# ????
self.act_paste = QAction(self)
self.act_paste.setShortcut(QKeySequence('Ctrl+V'))
self.act_paste.triggered.connect(self.slot_paste)
# ??
self.act_del = QAction(self)
self.act_del.setShortcut(QKeySequence('Del'))
self.act_del.triggered.connect(self.slot_del)
# ??
self.act_find = QAction(self)
self.act_find.setShortcut(QKeySequence('Ctrl+F'))
self.act_find.triggered.connect(self.slot_find)
# ????
self.act_find_next = QAction(self)
self.act_find_next.setShortcut(QKeySequence('F3'))
self.act_find_next.triggered.connect(self.slot_find_next)
# ???
self.act_replace = QAction(self)
self.act_replace.setShortcut(QKeySequence('Ctrl+H'))
self.act_replace.triggered.connect(self.slot_replace)
# ??
self.act_go_to = QAction(self)
self.act_go_to.setShortcut(QKeySequence('Ctrl+G'))
self.act_go_to.triggered.connect(self.slot_go_to)
# ????
self.act_select_all = QAction(self)
self.act_select_all.setShortcut(QKeySequence('Ctrl+A'))
self.act_select_all.triggered.connect(self.slot_select_all)
# ????
self.act_time_date = QAction(self)
self.act_time_date.setShortcut(QKeySequence('F5'))
self.act_time_date.triggered.connect(self.slot_time_date)
self.menu_edit = self.addMenu(self.tr('Edit') + "(&E)")
self.menu_edit.addAction(self.act_undo)
self.menu_edit.addSeparator()
self.menu_edit.addAction(self.act_cut)
self.menu_edit.addAction(self.act_copy)
self.menu_edit.addAction(self.act_paste)
self.menu_edit.addAction(self.act_del)
self.menu_edit.addSeparator()
self.menu_edit.addAction(self.act_find)
self.menu_edit.addAction(self.act_find_next)
self.menu_edit.addAction(self.act_replace)
self.menu_edit.addAction(self.act_go_to)
self.menu_edit.addSeparator()
self.menu_edit.addAction(self.act_select_all)
self.menu_edit.addAction(self.act_time_date)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。