本文整理汇总了Python中PyQt5.QtWidgets.QActionGroup.addAction方法的典型用法代码示例。如果您正苦于以下问题:Python QActionGroup.addAction方法的具体用法?Python QActionGroup.addAction怎么用?Python QActionGroup.addAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QActionGroup
的用法示例。
在下文中一共展示了QActionGroup.addAction方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: addShowActions
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
def addShowActions(self):
"""Adds a submenu giving access to the (other)
opened viewer documents"""
mds = self._actionCollection.viewer_document_select
docs = mds.viewdocs()
document_actions = {}
multi_docs = len(docs) > 1
if self._panel.widget().currentViewdoc():
current_doc_filename = self._panel.widget().currentViewdoc().filename()
m = self._menu
sm = QMenu(m)
sm.setTitle(_("Show..."))
sm.setEnabled(multi_docs)
ag = QActionGroup(m)
ag.triggered.connect(self._panel.slotShowViewdoc)
for d in docs:
action = QAction(sm)
action.setText(d.name())
action._document_filename = d.filename()
# TODO: Tooltips aren't shown by Qt (it seems)
action.setToolTip(d.filename())
action.setCheckable(True)
action.setChecked(d.filename() == current_doc_filename)
ag.addAction(action)
sm.addAction(action)
m.addSeparator()
m.addMenu(sm)
示例2: setup_menu
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
def setup_menu():
u"""
Add a submenu to a view menu.
Add a submenu that lists the available extra classes to the view
menu, creating that menu when neccessary
"""
if extra_classes_list:
try:
mw.addon_view_menu
except AttributeError:
mw.addon_view_menu = QMenu(_(u"&View"), mw)
mw.form.menubar.insertMenu(
mw.form.menuTools.menuAction(), mw.addon_view_menu)
mw.extra_class_submenu = QMenu(u"Mode (e&xtra class)", mw)
mw.addon_view_menu.addMenu(mw.extra_class_submenu)
action_group = QActionGroup(mw, exclusive=True)
no_class_action = action_group.addAction(
QAction('(none/standard)', mw, checkable=True))
no_class_action.setChecked(True)
mw.extra_class_submenu.addAction(no_class_action)
mw.connect(no_class_action, SIGNAL("triggered()"),
lambda: set_extra_class(None))
for ecd in extra_classes_list:
nn_class_action = action_group.addAction(
QAction(ecd['display'], mw, checkable=True))
mw.extra_class_submenu.addAction(nn_class_action)
mw.connect(nn_class_action, SIGNAL("triggered()"),
lambda ec=ecd['class']: set_extra_class(ec))
示例3: generateViewMenu
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
def generateViewMenu(self):
values = [
(self.tr("Nothing"), "Nothing"),
(self.tr("POV"), "POV"),
(self.tr("Label"), "Label"),
(self.tr("Progress"), "Progress"),
(self.tr("Compile"), "Compile"),
]
menus = [
(self.tr("Tree"), "Tree"),
(self.tr("Index cards"), "Cork"),
(self.tr("Outline"), "Outline")
]
submenus = {
"Tree": [
(self.tr("Icon color"), "Icon"),
(self.tr("Text color"), "Text"),
(self.tr("Background color"), "Background"),
],
"Cork": [
(self.tr("Icon"), "Icon"),
(self.tr("Text"), "Text"),
(self.tr("Background"), "Background"),
(self.tr("Border"), "Border"),
(self.tr("Corner"), "Corner"),
],
"Outline": [
(self.tr("Icon color"), "Icon"),
(self.tr("Text color"), "Text"),
(self.tr("Background color"), "Background"),
],
}
self.menuView.clear()
self.menuView.addMenu(self.menuMode)
self.menuView.addSeparator()
# print("Generating menus with", settings.viewSettings)
for mnu, mnud in menus:
m = QMenu(mnu, self.menuView)
for s, sd in submenus[mnud]:
m2 = QMenu(s, m)
agp = QActionGroup(m2)
for v, vd in values:
a = QAction(v, m)
a.setCheckable(True)
a.setData("{},{},{}".format(mnud, sd, vd))
if settings.viewSettings[mnud][sd] == vd:
a.setChecked(True)
a.triggered.connect(self.setViewSettingsAction, AUC)
agp.addAction(a)
m2.addAction(a)
m.addMenu(m2)
self.menuView.addMenu(m)
示例4: _create_actions
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
def _create_actions(self):
group = QActionGroup(self)
self.grid_action = QAction(
'&Grid', self, shortcut='ctrl+G', triggered=self.show_grid,
checkable=True, icon=load_icon(':/icons/show_grid.png')
)
self.grid_action.setChecked(True)
group.addAction(self.grid_action)
self.expanded_action = QAction(
'&Expanded', self, shortcut='ctrl+E', triggered=self.show_expanded,
checkable=True, icon=load_icon(':/icons/show_expanded.png')
)
group.addAction(self.expanded_action)
示例5: on_main_window_start
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
def on_main_window_start(main_window):
main_window.theme_menu = main_window.menuBar().addMenu(
main_window.tr('Themes'))
themes_directory = QFileInfo('themes')
if themes_directory.exists():
active_theme = ThemeManager.get_active_theme()
path = themes_directory.absoluteFilePath()
group_action = QActionGroup(main_window)
group_action.setExclusive(True)
for theme in os.listdir(path):
action = QAction(theme, main_window)
action.setData(theme)
action.setCheckable(True)
if theme == active_theme:
action.setChecked(True)
action.changed.connect(ThemeManager.wrapper(main_window))
group_action.addAction(action)
group_action.addAction(action)
main_window.theme_menu.addAction(action)
示例6: __init__
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
def __init__(self, win):
super(PathToolManager, self).__init__()
self.window = win
self._active_tool = None
self._active_part = None
self.select_tool = SelectTool(self)
self.pencil_tool = PencilTool(self)
self.break_tool = BreakTool(self)
self.erase_tool = EraseTool(self)
self.insertion_tool = InsertionTool(self)
self.skip_tool = SkipTool(self)
self.paint_tool = PaintTool(self) # (self, win.path_graphics_view.toolbar)
self.add_seq_tool = AddSeqTool(self)
self.mods_tool = ModsTool(self)
def installTool(tool_name, window):
l_tool_name = tool_name.lower()
tool_widget = getattr(window, 'action_path_' + l_tool_name)
tool = getattr(self, l_tool_name + '_tool')
tool.action_name = 'action_path_' + tool_name
def clickHandler(self):
tool_widget.setChecked(True)
self.setActiveTool(tool)
if hasattr(tool, 'widgetClicked'):
tool.widgetClicked()
# end def
select_tool_method_name = 'choose' + tool_name + 'Tool'
setattr(self.__class__, select_tool_method_name, clickHandler)
handler = getattr(self, select_tool_method_name)
tool_widget.triggered.connect(handler)
return tool_widget
# end def
tools = ('Select', 'Pencil', 'Break', 'Erase', 'Insertion', 'Skip', 'Paint', 'Add_Seq', 'Mods')
ag = QActionGroup(win)
# Call installTool on every tool
list(map((lambda tool_name: ag.addAction(installTool(tool_name, win))), tools))
ag.setExclusive(True)
# Select the preferred Startup tool
startup_tool_name = app().prefs.getStartupToolName()
getattr(self, 'choose' + startup_tool_name + 'Tool')()
示例7: SearchOptionsButton
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
class SearchOptionsButton(QPushButton):
def __init__(self, **kwargs):
super(SearchOptionsButton, self).__init__(**kwargs)
self.setText(self.tr('Options'))
menu = QMenu()
self.actionCi = menu.addAction(self.tr('Case insensitive'))
menu.addSeparator()
self.actionFormat = QActionGroup(self)
self.actionPlain = menu.addAction(self.tr('Plain text'))
self.actionPlain.setEnabled(False)
self.actionRe = menu.addAction(self.tr('Regular expression'))
self.actionGlob = menu.addAction(self.tr('Glob pattern'))
self.actionGlob.setEnabled(False)
self.actionFormat.addAction(self.actionPlain)
self.actionFormat.addAction(self.actionRe)
self.actionFormat.addAction(self.actionGlob)
self.actionRoot = menu.addAction(self.tr('Search in best root dir'))
for act in [self.actionCi, self.actionRe, self.actionPlain, self.actionGlob, self.actionRoot]:
act.setCheckable(True)
self.actionRe.setChecked(True)
self.setMenu(menu)
def shouldFindRoot(self):
return self.actionRoot.isChecked()
def caseSensitive(self):
return not self.actionCi.isChecked()
def reFormat(self):
if self.actionPlain.isChecked():
return QRegExp.FixedString
elif self.actionRe.isChecked():
return QRegExp.RegExp
elif self.actionGlob.isChecked():
return QRegExp.WildcardUnix
示例8: Gui
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
#.........这里部分代码省略.........
color = self.device.red_vel
else:
color = self.device.black_vel
self.queue_out.put(((self.NOTEON << 4) + b_channel,
b_pitch,
color))
else:
x, y = -1, -1
try:
x, y = self.device.getXY(btn_id)
except IndexError:
pass
except KeyError:
try:
x, y = self.device.getXY(btn_id_vel)
except KeyError:
pass
if (x >= 0 and y >= 0):
self.startStop(x, y)
def toggleBlinkButton(self):
for line in self.btn_matrix:
for btn in line:
if btn.blink:
if self.blktimer.state:
btn.setStyleSheet(btn.color)
else:
btn.setStyleSheet(self.DEFAULT)
if self.song.is_record:
if self.blktimer.state:
self.recordButton.setStyleSheet(self.RECORD_BLINK)
else:
self.recordButton.setStyleSheet(self.RECORD_DEFAULT)
self.blktimer.state = not self.blktimer.state
def updateProgress(self):
state, pos = self._jack_client.transport_query()
if 'bar' in pos:
bbt = "%d|%d|%03d" % (pos['bar'], pos['beat'], pos['tick'])
else:
bbt = "-|-|-"
seconds = int(pos['frame'] / pos['frame_rate'])
(minutes, second) = divmod(seconds, 60)
(hour, minute) = divmod(minutes, 60)
time = "%d:%02d:%02d" % (hour, minute, second)
self.bbtLabel.setText("%s\n%s" % (bbt, time))
for line in self.btn_matrix:
for btn in line:
if btn.clip and btn.clip.audio_file:
value = ((btn.clip.last_offset
/ self.song.length(btn.clip))
* 97)
btn.clip_position.setValue(value)
btn.clip_position.repaint()
def updateDevices(self):
for action in self.deviceGroup.actions():
self.deviceGroup.removeAction(action)
self.menuDevice.removeAction(action)
for device in self.devices:
action = QAction(device.name, self.menuDevice)
action.setCheckable(True)
action.setData(device)
self.menuDevice.addAction(action)
self.deviceGroup.addAction(action)
action.setChecked(True)
self.device = device
def addDevice(self, device):
self.devices.append(device)
self.updateDevices()
self.is_learn_device_mode = False
def onDeviceSelect(self):
self.device = self.deviceGroup.checkedAction().data()
if self.device:
if self.device.init_command:
for note in self.device.init_command:
self.queue_out.put(note)
self.redraw()
def timebase_callback(self, state, nframes, pos, new_pos):
if pos.frame_rate == 0:
return None
pos.valid = 0x10
pos.bar_start_tick = BAR_START_TICK
pos.beats_per_bar = self.beat_per_bar.value()
pos.beat_type = BEAT_TYPE
pos.ticks_per_beat = TICKS_PER_BEAT
pos.beats_per_minute = self.bpm.value()
ticks_per_second = (pos.beats_per_minute *
pos.ticks_per_beat) / 60
ticks = (ticks_per_second * pos.frame) / pos.frame_rate
(beats, pos.tick) = divmod(int(round(ticks, 0)),
int(round(pos.ticks_per_beat, 0)))
(bar, beat) = divmod(beats, int(round(pos.beats_per_bar, 0)))
(pos.bar, pos.beat) = (bar + 1, beat + 1)
return None
示例9: MainGlyphWindow
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
class MainGlyphWindow(QMainWindow):
def __init__(self, glyph, parent=None):
super().__init__(parent)
menuBar = self.menuBar()
fileMenu = QMenu("&File", self)
fileMenu.addAction("E&xit", self.close, QKeySequence.Quit)
menuBar.addMenu(fileMenu)
editMenu = QMenu("&Edit", self)
self._undoAction = editMenu.addAction(
"&Undo", self.undo, QKeySequence.Undo)
self._redoAction = editMenu.addAction(
"&Redo", self.redo, QKeySequence.Redo)
editMenu.addSeparator()
# XXX
action = editMenu.addAction("C&ut", self.cutOutlines, QKeySequence.Cut)
action.setEnabled(False)
self._copyAction = editMenu.addAction(
"&Copy", self.copyOutlines, QKeySequence.Copy)
editMenu.addAction("&Paste", self.pasteOutlines, QKeySequence.Paste)
editMenu.addAction(
"Select &All", self.selectAll, QKeySequence.SelectAll)
editMenu.addAction("&Deselect", self.deselect, "Ctrl+D")
menuBar.addMenu(editMenu)
glyphMenu = QMenu("&Glyph", self)
glyphMenu.addAction("&Next Glyph", lambda: self.glyphOffset(1), "End")
glyphMenu.addAction(
"&Previous Glyph", lambda: self.glyphOffset(-1), "Home")
glyphMenu.addAction("&Go To…", self.changeGlyph, "G")
glyphMenu.addSeparator()
self._layerAction = glyphMenu.addAction(
"&Layer Actions…", self.layerActions, "L")
menuBar.addMenu(glyphMenu)
# create tools and buttons toolBars
self._tools = []
self._toolsActionGroup = QActionGroup(self)
self._toolsToolBar = QToolBar("Tools", self)
self._toolsToolBar.setMovable(False)
self._buttons = []
self._buttonsToolBar = QToolBar("Buttons", self)
self._buttonsToolBar.setMovable(False)
self.addToolBar(self._toolsToolBar)
self.addToolBar(self._buttonsToolBar)
# http://www.setnode.com/blog/right-aligning-a-button-in-a-qtoolbar/
self._layersToolBar = QToolBar("Layers", self)
spacer = QWidget()
spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self._currentLayerBox = QComboBox(self)
self._currentLayerBox.currentIndexChanged.connect(
self._layerChanged)
self._layersToolBar.addWidget(spacer)
self._layersToolBar.addWidget(self._currentLayerBox)
self._layersToolBar.setContentsMargins(0, 0, 2, 0)
self._layersToolBar.setMovable(False)
self.addToolBar(self._layersToolBar)
viewMenu = self.createPopupMenu()
viewMenu.setTitle("View")
viewMenu.addSeparator()
action = viewMenu.addAction("Lock Toolbars", self.lockToolBars)
action.setCheckable(True)
action.setChecked(True)
menuBar.addMenu(viewMenu)
self.view = GlyphView(self)
self.setGlyph(glyph)
selectionTool = self.installTool(SelectionTool)
selectionTool.trigger()
self.installTool(PenTool)
self.installTool(RulerTool)
self.installTool(KnifeTool)
self.installButton(RemoveOverlapButton)
self.setCentralWidget(self.view.scrollArea())
self.resize(900, 700)
self.view.setFocus(True)
# ----------
# Menu items
# ----------
def glyphOffset(self, offset):
currentGlyph = self.view.glyph()
font = currentGlyph.font
glyphOrder = font.glyphOrder
# should be enforced in fontView already
if not (glyphOrder and len(glyphOrder)):
return
index = glyphOrder.index(currentGlyph.name)
newIndex = (index + offset) % len(glyphOrder)
glyph = font[glyphOrder[newIndex]]
self.setGlyph(glyph)
def changeGlyph(self):
glyph = self.view.glyph()
newGlyph, ok = GotoDialog.getNewGlyph(self, glyph)
if ok and newGlyph is not None:
#.........这里部分代码省略.........
示例10: Actions
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
#.........这里部分代码省略.........
self.reload_thumbnails.setStatusTip('Reload Thumbnails')
self.reload_thumbnails.triggered.connect(self.controller.reload_thumbnails)
self.reload_metadata = QAction(QIcon.fromTheme('edit-delete'), 'Reload MetaData', self)
self.reload_metadata.setStatusTip('Reload MetaData')
self.reload_metadata.triggered.connect(self.controller.reload_metadata)
self.make_directory_thumbnails = QAction(QIcon.fromTheme('folder'), 'Make Directory Thumbnails', self)
self.make_directory_thumbnails.setStatusTip('Make Directory Thumbnails')
self.make_directory_thumbnails.triggered.connect(self.controller.make_directory_thumbnails)
self.prepare = QAction(QIcon.fromTheme('media-playback-start'), 'Load Thumbnails', self)
self.prepare.setShortcut('F6')
self.prepare.setStatusTip('Load Thumbnails')
self.prepare.triggered.connect(self.controller.prepare)
self.view_detail_view = QAction("Detail View", self, checkable=True)
self.view_icon_view = QAction("Icon View", self, checkable=True)
self.view_small_icon_view = QAction("Small Icon View", self, checkable=True)
self.view_icon_view = QAction(QIcon.fromTheme("view-grid-symbolic"),
"Icon View")
self.view_icon_view.triggered.connect(self.controller.view_icon_view)
self.view_small_icon_view = QAction(QIcon.fromTheme("view-list-symbolic"),
"Small Icon View")
self.view_small_icon_view.triggered.connect(self.controller.view_small_icon_view)
self.view_detail_view = QAction(QIcon.fromTheme("view-more-horizontal-symbolic"),
"Detail View")
self.view_detail_view.triggered.connect(self.controller.view_detail_view)
self.view_group = QActionGroup(self)
self.view_group.addAction(self.view_detail_view)
self.view_group.addAction(self.view_icon_view)
self.view_group.addAction(self.view_small_icon_view)
self.show_hidden = QAction(QIcon.fromTheme('camera-photo'), "Show Hidden", self, checkable=True)
self.show_hidden.triggered.connect(self.controller.show_hidden)
self.show_hidden.setShortcut('Ctrl+H')
self.show_hidden.setChecked(settings.value("globals/show_hidden", False, bool))
self.show_filtered = QAction(QIcon.fromTheme('camera-photo'), "Show Filtered", self, checkable=True)
self.show_filtered.triggered.connect(self.controller.show_filtered)
self.show_abspath = QAction("Show AbsPath", self, checkable=True)
self.show_abspath.triggered.connect(self.controller.show_abspath)
self.show_basename = QAction("Show Basename", self, checkable=True)
self.show_basename.triggered.connect(self.controller.show_basename)
self.path_options_group = QActionGroup(self)
self.path_options_group.addAction(self.show_abspath)
self.path_options_group.addAction(self.show_basename)
self.toggle_timegaps = QAction("Show Time Gaps", self, checkable=True)
self.toggle_timegaps.triggered.connect(self.controller.toggle_timegaps)
# Sorting Options
self.sort_directories_first = QAction("Directories First", checkable=True)
self.sort_directories_first.triggered.connect(
lambda: self.controller._sorter.set_directories_first(self.sort_directories_first.isChecked()))
self.sort_directories_first.setChecked(True)
self.sort_reversed = QAction("Reverse Sort", checkable=True)
self.sort_reversed.triggered.connect(
示例11: MainWindow
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
class MainWindow(QMainWindow, Ui_MainWindow):
"""docstring for MainWindow."""
def __init__(self, parent=None):
super(MainWindow, self).__init__()
self._csvFilePath = ""
self.serialport = serial.Serial()
self.receiver_thread = readerThread(self)
self.receiver_thread.setPort(self.serialport)
self._localEcho = None
self._viewMode = None
self._quickSendOptRow = 1
self.setupUi(self)
self.setCorner(Qt.TopLeftCorner, Qt.LeftDockWidgetArea)
self.setCorner(Qt.BottomLeftCorner, Qt.LeftDockWidgetArea)
font = QtGui.QFont()
font.setFamily(EDITOR_FONT)
font.setPointSize(9)
self.txtEdtOutput.setFont(font)
self.txtEdtInput.setFont(font)
#self.quickSendTable.setFont(font)
if UI_FONT is not None:
font = QtGui.QFont()
font.setFamily(UI_FONT)
font.setPointSize(9)
self.dockWidget_PortConfig.setFont(font)
self.dockWidget_SendHex.setFont(font)
self.dockWidget_QuickSend.setFont(font)
self.setupMenu()
self.setupFlatUi()
self.onEnumPorts()
icon = QtGui.QIcon(":/MyTerm.ico")
self.setWindowIcon(icon)
self.actionAbout.setIcon(icon)
self.defaultStyleWidget = QWidget()
self.defaultStyleWidget.setWindowIcon(icon)
icon = QtGui.QIcon(":/qt_logo_16.ico")
self.actionAbout_Qt.setIcon(icon)
self._viewGroup = QActionGroup(self)
self._viewGroup.addAction(self.actionAscii)
self._viewGroup.addAction(self.actionHex_lowercase)
self._viewGroup.addAction(self.actionHEX_UPPERCASE)
self._viewGroup.setExclusive(True)
# bind events
self.actionOpen_Cmd_File.triggered.connect(self.openQuickSend)
self.actionSave_Log.triggered.connect(self.onSaveLog)
self.actionExit.triggered.connect(self.onExit)
self.actionOpen.triggered.connect(self.openPort)
self.actionClose.triggered.connect(self.closePort)
self.actionPort_Config_Panel.triggered.connect(self.onTogglePrtCfgPnl)
self.actionQuick_Send_Panel.triggered.connect(self.onToggleQckSndPnl)
self.actionSend_Hex_Panel.triggered.connect(self.onToggleHexPnl)
self.dockWidget_PortConfig.visibilityChanged.connect(self.onVisiblePrtCfgPnl)
self.dockWidget_QuickSend.visibilityChanged.connect(self.onVisibleQckSndPnl)
self.dockWidget_SendHex.visibilityChanged.connect(self.onVisibleHexPnl)
self.actionLocal_Echo.triggered.connect(self.onLocalEcho)
self.actionAlways_On_Top.triggered.connect(self.onAlwaysOnTop)
self.actionAscii.triggered.connect(self.onViewChanged)
self.actionHex_lowercase.triggered.connect(self.onViewChanged)
self.actionHEX_UPPERCASE.triggered.connect(self.onViewChanged)
self.actionAbout.triggered.connect(self.onAbout)
self.actionAbout_Qt.triggered.connect(self.onAboutQt)
self.btnOpen.clicked.connect(self.onOpen)
self.btnClear.clicked.connect(self.onClear)
self.btnSaveLog.clicked.connect(self.onSaveLog)
self.btnEnumPorts.clicked.connect(self.onEnumPorts)
self.btnSendHex.clicked.connect(self.onSend)
self.receiver_thread.read.connect(self.onReceive)
self.receiver_thread.exception.connect(self.onReaderExcept)
self._signalMapQuickSendOpt = QSignalMapper(self)
self._signalMapQuickSendOpt.mapped[int].connect(self.onQuickSendOptions)
self._signalMapQuickSend = QSignalMapper(self)
self._signalMapQuickSend.mapped[int].connect(self.onQuickSend)
# initial action
self.actionHEX_UPPERCASE.setChecked(True)
self.receiver_thread.setViewMode(VIEWMODE_HEX_UPPERCASE)
self.initQuickSend()
self.restoreLayout()
self.moveScreenCenter()
self.syncMenu()
if self.isMaximized():
self.setMaximizeButton("restore")
else:
self.setMaximizeButton("maximize")
self.loadSettings()
#.........这里部分代码省略.........
示例12: UserAgentMenu
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
class UserAgentMenu(QMenu):
"""
Class implementing a menu to select the user agent string.
"""
def __init__(self, title, url=None, parent=None):
"""
Constructor
@param title title of the menu (string)
@param url URL to set user agent for (QUrl)
@param parent reference to the parent widget (QWidget)
"""
super(UserAgentMenu, self).__init__(title, parent)
self.__manager = None
self.__url = url
if self.__url:
if self.__url.isValid():
import Helpviewer.HelpWindow
self.__manager = \
Helpviewer.HelpWindow.HelpWindow.userAgentsManager()
else:
self.__url = None
self.aboutToShow.connect(self.__populateMenu)
def __populateMenu(self):
"""
Private slot to populate the menu.
"""
self.aboutToShow.disconnect(self.__populateMenu)
self.__actionGroup = QActionGroup(self)
# add default action
self.__defaultUserAgent = QAction(self)
self.__defaultUserAgent.setText(self.tr("Default"))
self.__defaultUserAgent.setCheckable(True)
self.__defaultUserAgent.triggered.connect(
self.__switchToDefaultUserAgent)
if self.__url:
self.__defaultUserAgent.setChecked(
self.__manager.userAgentForUrl(self.__url) == "")
else:
from Helpviewer.HelpBrowserWV import HelpWebPage
self.__defaultUserAgent.setChecked(HelpWebPage().userAgent() == "")
self.addAction(self.__defaultUserAgent)
self.__actionGroup.addAction(self.__defaultUserAgent)
isChecked = self.__defaultUserAgent.isChecked()
# add default extra user agents
isChecked = self.__addDefaultActions() or isChecked
# add other action
self.addSeparator()
self.__otherUserAgent = QAction(self)
self.__otherUserAgent.setText(self.tr("Other..."))
self.__otherUserAgent.setCheckable(True)
self.__otherUserAgent.triggered.connect(
self.__switchToOtherUserAgent)
self.addAction(self.__otherUserAgent)
self.__actionGroup.addAction(self.__otherUserAgent)
self.__otherUserAgent.setChecked(not isChecked)
def __switchToDefaultUserAgent(self):
"""
Private slot to set the default user agent.
"""
if self.__url:
self.__manager.removeUserAgent(self.__url.host())
else:
from Helpviewer.HelpBrowserWV import HelpWebPage
HelpWebPage().setUserAgent("")
def __switchToOtherUserAgent(self):
"""
Private slot to set a custom user agent string.
"""
from Helpviewer.HelpBrowserWV import HelpWebPage
userAgent, ok = QInputDialog.getText(
self,
self.tr("Custom user agent"),
self.tr("User agent:"),
QLineEdit.Normal,
HelpWebPage().userAgent(resolveEmpty=True))
if ok:
if self.__url:
self.__manager.setUserAgentForUrl(self.__url, userAgent)
else:
HelpWebPage().setUserAgent(userAgent)
def __changeUserAgent(self):
"""
Private slot to change the user agent.
"""
act = self.sender()
if self.__url:
self.__manager.setUserAgentForUrl(self.__url, act.data())
else:
from Helpviewer.HelpBrowserWV import HelpWebPage
#.........这里部分代码省略.........
示例13: NoteEditor
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
class NoteEditor(QPlainTextEdit):
"""The note editing class used uses a plain text editing window to edit markdown files (notes)."""
def __init__(self, parent):
super(NoteEditor, self).__init__(parent)
self.highlighter = Highlighter( self.document() )
# the language dictionary to be used
self.dictionary = None
self.highlighter.setDictionary(self.dictionary)
# create dictionary selector menu
self.dictionarySelector = QMenu("&Dictionary")
self.dictionaryActions = QActionGroup(self)
self.noDicitionaryAction = self.dictionaryActions.addAction("None")
self.noDicitionaryAction.setCheckable(True)
self.dictionarySelector.addAction(self.noDicitionaryAction)
self.defaultDicitionaryAction = self.dictionaryActions.addAction("Default")
self.defaultDicitionaryAction.setCheckable(True)
self.dictionarySelector.addAction(self.defaultDicitionaryAction)
self.dictionarySelector.addSeparator()
for lang in enchant.list_languages():
langAction = self.dictionaryActions.addAction(lang)
langAction.setCheckable(True)
self.dictionarySelector.addAction(langAction)
# connect signal to change language dictionary and set the default language
self.dictionaryActions.triggered.connect(self.changeDictionary)
self.defaultDicitionaryAction.trigger()
# configure the custom context menu for spelling suggestions
self.setContextMenuPolicy(Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.showContextMenu)
# settings
self.noteFilePath = "" #stores path to the file being edited
self.setFont(QFont("Monospace"))
tabWidth = QFontMetrics( self.currentCharFormat().font() ).width(" ")#get the width of four spaces
self.setTabStopWidth(tabWidth) #set the default tab width to be that of four spaces
#%%% To do: use 'keyPressEvent' to implement auto-indent %%%
def setWrapMode(self, wrapMode):
self.setWordWrapMode(wrapMode)
def getDictionarySelector(self):
return self.dictionarySelector
def changeDictionary(self, action):
"""Change the spell check dictionary (language) based on the languaged selected from the 'Dictionary' menu."""
# change the language dictionary
if action is self.noDicitionaryAction:
self.dictionary = None
elif action is self.defaultDicitionaryAction:
self.dictionary = enchant.Dict(locale.getdefaultlocale()[0])
else:
self.dictionary = enchant.Dict(action.text())
# rehighlight the text to find spelling errors
self.highlighter.setDictionary(self.dictionary)
self.highlighter.rehighlight()
def showContextMenu(self, position):
"""Shows an appropriate context menu for the area of the editor that was right-clicked."""
# create the context menu that will be displayed
contextMenu = QMenu()
# select the word that was right-clicked
textCursor = self.cursorForPosition(position)
textCursor.select(QTextCursor.WordUnderCursor)
word = textCursor.selectedText()
# if a word was selected and it's misspelled, show a suggestion menu
if word and not len(word) is 0:
if not self.dictionary.check(word):
# create the suggestion menu
for suggestion in self.dictionary.suggest(word):
a = contextMenu.addAction(suggestion)
a.setData("custom")
contextMenu.addSeparator()
a = contextMenu.addAction("Add to dictionary")
a.setData("custom")
else:
a = contextMenu.addAction("Remove from dictionary")
a.setData("custom")
contextMenu.addSeparator()
#.........这里部分代码省略.........
示例14: Gui
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
#.........这里部分代码省略.........
b_pitch,
color))
else:
x, y = -1, -1
try:
x, y = self.device.getXY(btn_id)
except IndexError:
pass
except KeyError:
try:
x, y = self.device.getXY(btn_id_vel)
except KeyError:
pass
if (x >= 0 and y >= 0):
self.startStop(x, y)
def setCellColor(self, x, y, color, blink=False):
self.btn_matrix[x][y].setStyleSheet(color)
self.btn_matrix[x][y].blink = blink
self.btn_matrix[x][y].color = color
def toogleBlinkButton(self):
for line in self.btn_matrix:
for btn in line:
if btn.blink:
if self.blktimer.state:
btn.setStyleSheet(btn.color)
else:
btn.setStyleSheet(self.DEFAULT)
if self.song.is_record:
if self.blktimer.state:
self.recordButton.setStyleSheet(self.RECORD_BLINK)
else:
self.recordButton.setStyleSheet(self.RECORD_DEFAULT)
self.blktimer.state = not self.blktimer.state
def updateProgress(self):
state, pos = self._jack_client.transport_query()
if 'bar' in pos:
bbt = "%d|%d|%03d" % (pos['bar'], pos['beat'], pos['tick'])
else:
bbt = "-|-|-"
seconds = int(pos['frame'] / pos['frame_rate'])
(minutes, second) = divmod(seconds, 60)
(hour, minute) = divmod(minutes, 60)
time = "%d:%02d:%02d" % (hour, minute, second)
self.bbtLabel.setText("%s\n%s" % (bbt, time))
for line in self.btn_matrix:
for btn in line:
if btn.clip and btn.clip.audio_file:
value = ((btn.clip.last_offset
/ self.song.length(btn.clip))
* 97)
btn.clip_position.setValue(value)
btn.clip_position.repaint()
def updateDevices(self):
for action in self.deviceGroup.actions():
self.deviceGroup.removeAction(action)
self.menuDevice.removeAction(action)
for device in self.devices:
action = QAction(device.name, self.menuDevice)
action.setCheckable(True)
action.setData(device)
self.menuDevice.addAction(action)
self.deviceGroup.addAction(action)
action.setChecked(True)
self.device = device
def addDevice(self, device):
self.devices.append(device)
self.updateDevices()
self.is_learn_device_mode = False
def onDeviceSelect(self):
self.device = self.deviceGroup.checkedAction().data()
if self.device:
if self.device.init_command:
for note in self.device.init_command:
self.queue_out.put(note)
self.redraw()
def timebase_callback(self, state, nframes, pos, new_pos):
pos.valid = 0x10
pos.bar_start_tick = BAR_START_TICK
pos.beats_per_bar = self.beat_per_bar.value()
pos.beat_type = BEAT_TYPE
pos.ticks_per_beat = TICKS_PER_BEAT
pos.beats_per_minute = self.bpm.value()
ticks = frame2bbt(pos.frame,
pos.ticks_per_beat,
pos.beats_per_minute,
pos.frame_rate)
(beats, pos.tick) = divmod(int(round(ticks, 0)),
int(round(pos.ticks_per_beat, 0)))
(bar, beat) = divmod(beats, int(round(pos.beats_per_bar, 0)))
(pos.bar, pos.beat) = (bar + 1, beat + 1)
return None
示例15: ReTextWindow
# 需要导入模块: from PyQt5.QtWidgets import QActionGroup [as 别名]
# 或者: from PyQt5.QtWidgets.QActionGroup import addAction [as 别名]
class ReTextWindow(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
self.resize(950, 700)
screenRect = QDesktopWidget().screenGeometry()
if globalSettings.windowGeometry:
self.restoreGeometry(globalSettings.windowGeometry)
else:
self.move((screenRect.width()-self.width())/2, (screenRect.height()-self.height())/2)
if not screenRect.contains(self.geometry()):
self.showMaximized()
if globalSettings.iconTheme:
QIcon.setThemeName(globalSettings.iconTheme)
if QIcon.themeName() in ('hicolor', ''):
if not QFile.exists(icon_path + 'document-new.png'):
QIcon.setThemeName(get_icon_theme())
if QFile.exists(icon_path+'retext.png'):
self.setWindowIcon(QIcon(icon_path+'retext.png'))
elif QFile.exists('/usr/share/pixmaps/retext.png'):
self.setWindowIcon(QIcon('/usr/share/pixmaps/retext.png'))
else:
self.setWindowIcon(QIcon.fromTheme('retext',
QIcon.fromTheme('accessories-text-editor')))
self.tabWidget = QTabWidget(self)
self.initTabWidget()
self.setCentralWidget(self.tabWidget)
self.tabWidget.currentChanged.connect(self.changeIndex)
self.tabWidget.tabCloseRequested.connect(self.closeTab)
toolBar = QToolBar(self.tr('File toolbar'), self)
self.addToolBar(Qt.TopToolBarArea, toolBar)
self.editBar = QToolBar(self.tr('Edit toolbar'), self)
self.addToolBar(Qt.TopToolBarArea, self.editBar)
self.searchBar = QToolBar(self.tr('Search toolbar'), self)
self.addToolBar(Qt.BottomToolBarArea, self.searchBar)
toolBar.setVisible(not globalSettings.hideToolBar)
self.editBar.setVisible(not globalSettings.hideToolBar)
self.actionNew = self.act(self.tr('New'), 'document-new',
self.createNew, shct=QKeySequence.New)
self.actionNew.setPriority(QAction.LowPriority)
self.actionOpen = self.act(self.tr('Open'), 'document-open',
self.openFile, shct=QKeySequence.Open)
self.actionOpen.setPriority(QAction.LowPriority)
self.actionSetEncoding = self.act(self.tr('Set encoding'),
trig=self.showEncodingDialog)
self.actionSetEncoding.setEnabled(False)
self.actionReload = self.act(self.tr('Reload'), 'view-refresh',
lambda: self.currentTab.readTextFromFile())
self.actionReload.setEnabled(False)
self.actionSave = self.act(self.tr('Save'), 'document-save',
self.saveFile, shct=QKeySequence.Save)
self.actionSave.setEnabled(False)
self.actionSave.setPriority(QAction.LowPriority)
self.actionSaveAs = self.act(self.tr('Save as'), 'document-save-as',
self.saveFileAs, shct=QKeySequence.SaveAs)
self.actionNextTab = self.act(self.tr('Next tab'), 'go-next',
lambda: self.switchTab(1), shct=Qt.CTRL+Qt.Key_PageDown)
self.actionPrevTab = self.act(self.tr('Previous tab'), 'go-previous',
lambda: self.switchTab(-1), shct=Qt.CTRL+Qt.Key_PageUp)
self.actionPrint = self.act(self.tr('Print'), 'document-print',
self.printFile, shct=QKeySequence.Print)
self.actionPrint.setPriority(QAction.LowPriority)
self.actionPrintPreview = self.act(self.tr('Print preview'), 'document-print-preview',
self.printPreview)
self.actionViewHtml = self.act(self.tr('View HTML code'), 'text-html', self.viewHtml)
self.actionChangeEditorFont = self.act(self.tr('Change editor font'),
trig=self.changeEditorFont)
self.actionChangePreviewFont = self.act(self.tr('Change preview font'),
trig=self.changePreviewFont)
self.actionSearch = self.act(self.tr('Find text'), 'edit-find', shct=QKeySequence.Find)
self.actionSearch.setCheckable(True)
self.actionSearch.triggered[bool].connect(self.searchBar.setVisible)
self.searchBar.visibilityChanged.connect(self.searchBarVisibilityChanged)
self.actionPreview = self.act(self.tr('Preview'), shct=Qt.CTRL+Qt.Key_E,
trigbool=self.preview)
if QIcon.hasThemeIcon('document-preview'):
self.actionPreview.setIcon(QIcon.fromTheme('document-preview'))
elif QIcon.hasThemeIcon('preview-file'):
self.actionPreview.setIcon(QIcon.fromTheme('preview-file'))
elif QIcon.hasThemeIcon('x-office-document'):
self.actionPreview.setIcon(QIcon.fromTheme('x-office-document'))
else:
self.actionPreview.setIcon(QIcon(icon_path+'document-preview.png'))
self.actionLivePreview = self.act(self.tr('Live preview'), shct=Qt.CTRL+Qt.Key_L,
trigbool=self.enableLivePreview)
menuPreview = QMenu()
menuPreview.addAction(self.actionLivePreview)
self.actionPreview.setMenu(menuPreview)
self.actionTableMode = self.act(self.tr('Table mode'), shct=Qt.CTRL+Qt.Key_T,
trigbool=lambda x: self.currentTab.editBox.enableTableMode(x))
if ReTextFakeVimHandler:
self.actionFakeVimMode = self.act(self.tr('FakeVim mode'),
shct=Qt.CTRL+Qt.ALT+Qt.Key_V, trigbool=self.enableFakeVimMode)
if globalSettings.useFakeVim:
self.actionFakeVimMode.setChecked(True)
self.enableFakeVimMode(True)
self.actionFullScreen = self.act(self.tr('Fullscreen mode'), 'view-fullscreen',
shct=Qt.Key_F11, trigbool=self.enableFullScreen)
self.actionFullScreen.setPriority(QAction.LowPriority)
self.actionConfig = self.act(self.tr('Preferences'), icon='preferences-system',
trig=self.openConfigDialog)
#.........这里部分代码省略.........