本文整理汇总了Python中PyQt5.QtWidgets.QAction.isChecked方法的典型用法代码示例。如果您正苦于以下问题:Python QAction.isChecked方法的具体用法?Python QAction.isChecked怎么用?Python QAction.isChecked使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QAction
的用法示例。
在下文中一共展示了QAction.isChecked方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
def __init__(self, parent):
super().__init__(parent)
self.parent, unitMeasure, rulerSize, colors, zoom= parent, QMenu(gettext("Unit Measure"), self), QMenu(gettext("Ruler Size"), self), QMenu(gettext("Colors"), self), QMenu(gettext("Zoom"), self)
self.addAction(QAction(parent.orientation[1 if not parent.oH else 0], self, triggered= partial(parent.changeOrientation, 1 if not parent.oH else 0)))
for menu in [ [ zoom, parent.zooms, parent.changeMode, parent.zoom ], [ unitMeasure, parent.unitMeasure, parent.changeUnitMeasure, parent.cUM ], [ rulerSize, parent.rulerSize, parent.changeRulerSize, parent.sXY ], [ colors, parent.colors, parent.changeRulerColor, parent.defaultColors ] ]:
for i, item in enumerate(menu[1]):
item= QAction(item[0][0], self, triggered= partial(menu[2], i))
if type(menu[3]) == type(list()) and i == len(menu[1]) - 1:
menu[0].addSeparator()
item.setEnabled(False if menu[1] == menu[3] else True)
else:
item.setCheckable(True)
item.setChecked(True if i == menu[3] else False)
item.setEnabled(not item.isChecked())
menu[0].addAction(item)
if menu[0] in [ unitMeasure, colors ]:
menu[0].setEnabled(not bool(parent.zoom))
self.addMenu(menu[0])
self.addSeparator()
self.addAction(QAction(parent.about, self, triggered= self.AboutDialog(parent).exec_))
self.addSeparator()
self.addAction(QAction(gettext("Exit"), self, triggered= parent.close))
示例2: ImageViewer
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
class ImageViewer(QMainWindow):
def __init__(self):
super(ImageViewer, self).__init__()
self.printer = QPrinter()
self.scaleFactor = 0.0
self.imageLabel = QLabel()
self.imageLabel.setBackgroundRole(QPalette.Base)
self.imageLabel.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)
self.imageLabel.setScaledContents(True)
self.scrollArea = QScrollArea()
self.scrollArea.setBackgroundRole(QPalette.Dark)
self.scrollArea.setWidget(self.imageLabel)
self.setCentralWidget(self.scrollArea)
self.createActions()
self.createMenus()
self.initUI()
self.setWindowTitle("Encrypter Pictures")
self.resize(500, 400)
def initUI(self):
encrypt = QAction(QIcon(CURRENT_DIR + '/encrypt.png'), 'Encrypt', self)
encrypt.setShortcut('Ctrl+D')
encrypt.triggered.connect(self.buttonClicked)
open_file= QAction(QIcon(CURRENT_DIR + '/open.png'), 'Exit', self)
open_file.triggered.connect(self.open)
exitAction = QAction(QIcon(CURRENT_DIR + '/exit24.png'), 'Exit', self)
exitAction.triggered.connect(qApp.quit)
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(open_file)
self.toolbar.addAction(encrypt)
self.toolbar.addAction(exitAction)
self.statusBar()
def buttonClicked(self):
try:
self.statusBar().showMessage("Encrypting: " + self.fileName)
self.output_path = cript(self.fileName)
self.show_image()
self.statusBar().showMessage("Salve on: " + self.output_path)
except AttributeError:
self.statusBar().showMessage("Select an image")
def show_image(self):
"""docstring for show_image"""
if self.output_path:
image = QImage(self.output_path)
if image.isNull():
QMessageBox.information(self, "Image Viewer",
"Cannot load %s." % self.output_path)
return
self.imageLabel.setPixmap(QPixmap.fromImage(image))
self.scaleFactor = 1.0
self.printAct.setEnabled(True)
self.fitToWindowAct.setEnabled(True)
self.updateActions()
if not self.fitToWindowAct.isChecked():
self.imageLabel.adjustSize()
def open(self):
self.fileName, _ = QFileDialog.getOpenFileName(self, "Open File",
QDir.currentPath())
if self.fileName:
image = QImage(self.fileName)
if image.isNull():
QMessageBox.information(self, "Image Viewer",
"Cannot load %s." % self.fileName)
return
self.imageLabel.setPixmap(QPixmap.fromImage(image))
self.scaleFactor = 1.0
self.printAct.setEnabled(True)
self.fitToWindowAct.setEnabled(True)
self.updateActions()
if not self.fitToWindowAct.isChecked():
self.imageLabel.adjustSize()
def print_(self):
dialog = QPrintDialog(self.printer, self)
if dialog.exec_():
painter = QPainter(self.printer)
rect = painter.viewport()
size = self.imageLabel.pixmap().size()
size.scale(rect.size(), Qt.KeepAspectRatio)
painter.setViewport(
rect.x(),
rect.y(),
#.........这里部分代码省略.........
示例3: init_menubar
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
def init_menubar(self):
"""Generates the main window menu bar."""
# Creates the actions for the main menu
### 'File' menu
exit_action = QAction('E&xit', self)
exit_action.setShortcut('Ctrl+Q')
exit_action.setStatusTip('Exit smtracker')
exit_action.triggered.connect(qApp.exit)
export_action = QAction('&Export...', self)
export_action.setShortcut('Ctrl+E')
export_action.setStatusTip('Export table as HTML file')
export_action.triggered.connect(self.export_html)
open_action = QAction('&Open...', self)
open_action.setShortcut('Ctrl+O')
open_action.setStatusTip('Open a Stats.xml file')
open_action.triggered.connect(self.open_file)
### 'Options' menu
icons_action = QAction('Enable &icons', self)
icons_action.setCheckable(True)
icons_action.setChecked(self.icons_enabled)
icons_action.triggered.connect(lambda: self.toggle_icons(icons_action.isChecked()))
### 'About' menu
about_action = QAction('&About smtracker...', self)
about_action.triggered.connect(self.about_box)
qt_action = QAction('About &Qt...', self)
qt_action.triggered.connect(QApplication.aboutQt)
# Creates the menu bar and starts adding items to it
menubar = self.menuBar()
file_menu = menubar.addMenu('&File')
file_menu.addAction(open_action)
# Create the profile submenu and add the machine profile item
profile_menu = file_menu.addMenu('Open &profile')
mp_action = profile_menu.addAction('Machine Profile')
# Define the location for profiles
profile_folder, mp_folder = parse.get_profile_location()
# Check if the machine profile exists
if os.path.isfile(mp_folder + "Stats.xml") is True:
no_mp = False
mp_action.setStatusTip('Open this machine\'s profile')
machine_profile = etree.parse(mp_folder + "Stats.xml").getroot()
mp_action.triggered.connect(lambda: self.set_stats(machine_profile))
else:
no_mp = True
mp_action.setEnabled(False)
# Check if there's any local profiles
if os.path.isdir(profile_folder) is True:
no_lp = False
profile_menu.addSeparator()
for profile in os.listdir(profile_folder):
tempstats = etree.parse(profile_folder + profile + "/Stats.xml").getroot()
tempname = parse.get_profile_name(tempstats)
action = profile_menu.addAction(tempname)
function = functools.partial(self.set_stats, tempstats)
action.triggered.connect(function)
else:
no_lp = True
# If there are no profiles at all, disable profile menu
if no_mp is True and no_lp is True:
profile_menu.setEnabled(False)
# Add the rest of the actions to the menubar
file_menu.addAction(export_action)
file_menu.addAction(exit_action)
options_menu = menubar.addMenu('&Options')
options_menu.addAction(icons_action)
about_menu = menubar.addMenu('&About')
about_menu.addAction(about_action)
about_menu.addAction(qt_action)
示例4: Actions
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
class Actions(QObject):
def __init__(self, controller: 'Controller') -> None:
super().__init__()
self.controller = controller
self.make_actions()
def make_actions(self) -> None:
self.save_as = QAction(QIcon.fromTheme('save-as'), 'Save Filelist As', self)
self.save_as.setShortcut('Ctrl+s')
self.save_as.setStatusTip('Save the current file selection')
self.save_as.triggered.connect(self.controller.save_as)
def on_debug(enabled):
if enabled:
logging.getLogger().setLevel(logging.DEBUG)
else:
logging.getLogger().setLevel(logging.ERROR)
self.debug = QAction(QIcon.fromTheme('media-record'), '&Debug', self, checkable=True)
self.debug.setStatusTip('Debug application')
self.debug.setChecked(logging.getLogger().getEffectiveLevel() == logging.DEBUG)
self.debug.triggered.connect(lambda: on_debug(self.debug.isChecked()))
self.exit = QAction(QIcon.fromTheme('window-close'), '&Exit', self)
self.exit.setShortcut('Ctrl+W')
self.exit.setStatusTip('Close Window')
self.exit.triggered.connect(self.controller.close_window)
self.home = QAction(QIcon.fromTheme('go-home'), '&Go to Home', self)
self.home.setStatusTip('Go to the Home directory')
self.home.triggered.connect(self.controller.go_home)
self.undo = QAction(QIcon.fromTheme('undo'), '&Undo', self)
self.undo.setShortcut('Ctrl+Z')
self.undo.setStatusTip('Undo the last action')
self.redo = QAction(QIcon.fromTheme('redo'), '&Redo', self)
self.redo.setShortcut('Ctrl+Y')
self.redo.setStatusTip('Redo the last action')
self.edit_copy = QAction(QIcon.fromTheme('edit-copy'), '&Copy', self)
self.edit_copy.setShortcut('Ctrl+C')
self.edit_copy.setStatusTip('Copy Selected Files')
self.edit_copy.triggered.connect(self.controller.on_edit_copy)
self.edit_cut = QAction(QIcon.fromTheme('edit-cut'), 'Cu&t', self)
self.edit_cut.setShortcut('Ctrl+X')
self.edit_cut.setStatusTip('Cut Selected Files')
self.edit_cut.triggered.connect(self.controller.on_edit_cut)
self.edit_paste = QAction(QIcon.fromTheme('edit-paste'), '&Paste', self)
self.edit_paste.setShortcut('Ctrl+V')
self.edit_paste.setStatusTip('Paste Files')
self.edit_paste.triggered.connect(self.controller.on_edit_paste)
self.edit_delete = QAction(QIcon.fromTheme('edit-delete'), '&Delete', self)
self.edit_delete.setStatusTip('Delete Selected Files')
self.edit_select_all = QAction(QIcon.fromTheme('edit-select-all'), '&Select All', self)
self.edit_select_all.setShortcut('Ctrl+A')
self.edit_select_all.setStatusTip('Select All')
self.edit_select_all.triggered.connect(self.controller.select_all)
self.zoom_in = QAction(QIcon.fromTheme('zoom-in'), "Zoom &In", self)
self.zoom_in.triggered.connect(self.controller.zoom_in)
self.zoom_in.setShortcut('Ctrl+=')
self.zoom_out = QAction(QIcon.fromTheme('zoom-out'), "Zoom &Out", self)
self.zoom_out.triggered.connect(self.controller.zoom_out)
self.zoom_out.setShortcut('Ctrl+-')
self.lod_in = QAction(QIcon.fromTheme('zoom-in'), "Level of Detail &In", self)
self.lod_in.triggered.connect(self.controller.more_details)
self.lod_in.setShortcut('Alt+=')
self.lod_out = QAction(QIcon.fromTheme('zoom-out'), "Level of Detail &Out", self)
self.lod_out.triggered.connect(self.controller.less_details)
self.lod_out.setShortcut('Alt+-')
self.crop_thumbnails = QAction(QIcon.fromTheme('zoom-fit-best'), "Crop Thumbnails", self, checkable=True)
self.crop_thumbnails.triggered.connect(
lambda: self.controller.set_crop_thumbnails(self.crop_thumbnails.isChecked()))
self.new_window = QAction(QIcon.fromTheme('window-new'), "New Window", self)
self.new_window.triggered.connect(lambda x: self.controller.new_controller(clone=True))
self.new_window.setShortcut('Ctrl+N')
self.parent_directory = QAction(self.controller.app.qapp.style().standardIcon(QStyle.SP_FileDialogToParent),
"Parent Directory")
self.parent_directory.triggered.connect(self.controller.parent_directory)
self.back = QAction(QIcon.fromTheme('back'), 'Go &back', self)
self.back.setShortcut('Alt+Left')
self.back.setStatusTip('Go back in history')
self.back.setEnabled(False)
self.back.triggered.connect(self.controller.go_back)
self.forward = QAction(QIcon.fromTheme('forward'), 'Go &forward', self)
self.forward.setShortcut('Alt+Right')
#.........这里部分代码省略.........
示例5: MusicPlayer
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
#.........这里部分代码省略.........
try:
self.pixmap.loadFromData(artwork)
except TypeError:
self.pixmap = QPixmap(artwork)
meta_data = '{} - {} - {} - {}' .format(track_number, artist, album, title)
self.setWindowTitle(meta_data)
self.art.setScaledContents(True)
self.art.setPixmap(self.pixmap)
self.layout.addWidget(self.art)
def initialize_playlist(self, start):
"""Display playlist and reset playback mode when media inserted into playlist."""
if start == 0:
if self.library_dock.isVisible():
self.playlist_dock.setVisible(True)
self.playlist_dock.show()
self.playlist_dock.raise_()
if self.playlist.playbackMode() != QMediaPlaylist.Sequential:
self.playlist.setPlaybackMode(QMediaPlaylist.Sequential)
repeat_icon = utilities.resource_filename('mosaic.images', 'md_repeat_none.png')
self.repeat_action.setIcon(QIcon(repeat_icon))
def press_playback(self, event):
"""Change the playback of the player on cover art mouse event.
When the cover art is clicked, the player will play the media if the player is
either paused or stopped. If the media is playing, the media is set
to pause.
"""
if event.button() == 1 and configuration.Playback().cover_art_playback.isChecked():
if (self.player.state() == QMediaPlayer.StoppedState or
self.player.state() == QMediaPlayer.PausedState):
self.player.play()
elif self.player.state() == QMediaPlayer.PlayingState:
self.player.pause()
def seek(self, seconds):
"""Set the position of the song to the position dragged to by the user."""
self.player.setPosition(seconds * 1000)
def song_duration(self, duration):
"""Set the slider to the duration of the currently played media."""
duration /= 1000
self.duration = duration
self.slider.setMaximum(duration)
def song_position(self, progress):
"""Move the horizontal slider in sync with the duration of the song.
The progress is relayed to update_duration() in order
to display the time label next to the slider.
"""
progress /= 1000
if not self.slider.isSliderDown():
self.slider.setValue(progress)
self.update_duration(progress)
def update_duration(self, current_duration):
"""Calculate the time played and the length of the song.
示例6: revisions
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
#.........这里部分代码省略.........
self.list.clear()
item = self._index.internalPointer()
rev = item.revisions()
# Sort revisions
rev = sorted(rev, key=lambda x: x[0], reverse=True)
for r in rev:
timestamp = datetime.datetime.fromtimestamp(r[0]).strftime('%Y-%m-%d %H:%M:%S')
readable = self.readableDelta(r[0])
i = QListWidgetItem(readable)
i.setData(Qt.UserRole, r[0])
i.setData(Qt.UserRole + 1, timestamp)
self.list.addItem(i)
def readableDelta(self, timestamp):
now = datetime.datetime.now()
delta = now - datetime.datetime.fromtimestamp(timestamp)
if delta.days > 365:
return self.tr("{} years ago").format(str(int(delta.days / 365)))
elif delta.days > 30:
return self.tr("{} months ago").format(str(int(delta.days / 30.5)))
elif delta.days > 0:
return self.tr("{} days ago").format(str(delta.days))
if delta.days == 1:
return self.tr("1 day ago")
elif delta.seconds > 60 * 60:
return self.tr("{} hours ago").format(str(int(delta.seconds / 60 / 60)))
elif delta.seconds > 60:
return self.tr("{} minutes ago").format(str(int(delta.seconds / 60)))
else:
return self.tr("{} seconds ago").format(str(delta.seconds))
def showDiff(self):
# UI stuff
self.actShowSpaces.setEnabled(self.actShowDiff.isChecked())
self.actDiffOnly.setEnabled(self.actShowDiff.isChecked())
# FIXME: Errors in line number
i = self.list.currentItem()
if not i:
self.btnDelete.setEnabled(False)
self.btnRestore.setEnabled(False)
return
self.btnDelete.setEnabled(True)
self.btnRestore.setEnabled(True)
ts = i.data(Qt.UserRole)
item = self._index.internalPointer()
textNow = item.text()
textBefore = [r[1] for r in item.revisions() if r[0] == ts][0]
if self.actShowVersion.isChecked():
self.view.setText(textBefore)
return
textNow = textNow.splitlines()
textBefore = textBefore.splitlines()
d = difflib.Differ()
diff = list(d.compare(textBefore, textNow))
if self.actShowSpaces.isChecked():
_format = lambda x: x.replace(" ", "␣ ")
else:
示例7: MainWindow
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
class MainWindow(QMainWindow):
def __init__(self, url):
super(MainWindow, self).__init__()
self.progress = 0
fd = QFile(":/jquery.min.js")
if fd.open(QIODevice.ReadOnly | QFile.Text):
self.jQuery = QTextStream(fd).readAll()
fd.close()
else:
self.jQuery = ''
QNetworkProxyFactory.setUseSystemConfiguration(True)
self.view = QWebView(self)
self.view.load(url)
self.view.loadFinished.connect(self.adjustLocation)
self.view.titleChanged.connect(self.adjustTitle)
self.view.loadProgress.connect(self.setProgress)
self.view.loadFinished.connect(self.finishLoading)
self.locationEdit = QLineEdit(self)
self.locationEdit.setSizePolicy(QSizePolicy.Expanding,
self.locationEdit.sizePolicy().verticalPolicy())
self.locationEdit.returnPressed.connect(self.changeLocation)
toolBar = self.addToolBar("Navigation")
toolBar.addAction(self.view.pageAction(QWebPage.Back))
toolBar.addAction(self.view.pageAction(QWebPage.Forward))
toolBar.addAction(self.view.pageAction(QWebPage.Reload))
toolBar.addAction(self.view.pageAction(QWebPage.Stop))
toolBar.addWidget(self.locationEdit)
viewMenu = self.menuBar().addMenu("&View")
viewSourceAction = QAction("Page Source", self)
viewSourceAction.triggered.connect(self.viewSource)
viewMenu.addAction(viewSourceAction)
effectMenu = self.menuBar().addMenu("&Effect")
effectMenu.addAction("Highlight all links", self.highlightAllLinks)
self.rotateAction = QAction(
self.style().standardIcon(QStyle.SP_FileDialogDetailedView),
"Turn images upside down", self, checkable=True,
toggled=self.rotateImages)
effectMenu.addAction(self.rotateAction)
toolsMenu = self.menuBar().addMenu("&Tools")
toolsMenu.addAction("Remove GIF images", self.removeGifImages)
toolsMenu.addAction("Remove all inline frames",
self.removeInlineFrames)
toolsMenu.addAction("Remove all object elements",
self.removeObjectElements)
toolsMenu.addAction("Remove all embedded elements",
self.removeEmbeddedElements)
self.setCentralWidget(self.view)
def viewSource(self):
accessManager = self.view.page().networkAccessManager()
request = QNetworkRequest(self.view.url())
reply = accessManager.get(request)
reply.finished.connect(self.slotSourceDownloaded)
def slotSourceDownloaded(self):
reply = self.sender()
self.textEdit = QTextEdit()
self.textEdit.setAttribute(Qt.WA_DeleteOnClose)
self.textEdit.show()
self.textEdit.setPlainText(QTextStream(reply).readAll())
self.textEdit.resize(600, 400)
reply.deleteLater()
def adjustLocation(self):
self.locationEdit.setText(self.view.url().toString())
def changeLocation(self):
url = QUrl.fromUserInput(self.locationEdit.text())
self.view.load(url)
self.view.setFocus()
def adjustTitle(self):
if 0 < self.progress < 100:
self.setWindowTitle("%s (%s%%)" % (self.view.title(), self.progress))
else:
self.setWindowTitle(self.view.title())
def setProgress(self, p):
self.progress = p
self.adjustTitle()
def finishLoading(self):
self.progress = 100
self.adjustTitle()
self.view.page().mainFrame().evaluateJavaScript(self.jQuery)
self.rotateImages(self.rotateAction.isChecked())
def highlightAllLinks(self):
code = """$('a').each(
#.........这里部分代码省略.........
示例8: PDFAreaSelectorDlg
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
class PDFAreaSelectorDlg(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self._parent = parent
self.setWindowTitle("Area selection")
self.scaleFactor = 1
self.setModal(True)
self.controlBarWgt = QWidget(self)
self.nextPageBtn = QPushButton("Next page (Ctrl+right arrow)")
self.previousPageBtn = QPushButton("Previous page (Ctrl+left arrow)")
self.noPageTxt = QLabel("1")
self.noPageTxt.setStyleSheet("border: 1px solid grey")
self.noPageTxt.setFixedWidth(40)
self.controlBarWgt.setLayout(QHBoxLayout())
self.nextPageBtn.clicked.connect(self.nextPage)
self.previousPageBtn.clicked.connect(self.previousPage)
self.controlBarWgt.layout().addWidget(self.previousPageBtn)
self.controlBarWgt.layout().addWidget(self.noPageTxt)
self.controlBarWgt.layout().addWidget(self.nextPageBtn)
self.imageLabel = ImageWidget()
self.imageLabel.setBackgroundRole(QPalette.Base)
self.imageLabel.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)
self.imageLabel.setScaledContents(True)
self.scrollArea = QScrollArea()
self.scrollArea.setBackgroundRole(QPalette.Dark)
self.scrollArea.setWidget(self.imageLabel)
self.createActions()
self.createMenus()
self.setLayout(QVBoxLayout())
self.layout().addWidget(self.menuBar)
self.layout().addWidget(self.controlBarWgt)
self.layout().addWidget(self.scrollArea)
self.imageLabel.areaSelected.connect(self.resendSelectedEvent)
self.loadImage()
@pyqtSlot(float, float, float, float, QPixmap)
def resendSelectedEvent(self, x, y, width, height, image):
self._parent.x = x
self._parent.y = y
self._parent.width = width
self._parent.height = height
self._parent.image = image
self._parent.areaSelected.emit()
self.close()
def loadImage(self):
image = QImage.fromData(self._parent.pages[self._parent.currentPageInd],"PNG")
self.imageLabel.setPixmap(QPixmap.fromImage(image))
self.fitToWindowAct.setEnabled(True)
self.updateActions()
if not self.fitToWindowAct.isChecked():
self.imageLabel.adjustSize()
self.setWindowFilePath(self._parent.fileName)
return True
def zoomIn(self):
self.scaleImage(1.25)
def zoomOut(self):
self.scaleImage(0.8)
def normalSize(self):
self.imageLabel.adjustSize()
self.scaleFactor = 1.0
def fitToWindow(self):
fitToWindow = self.fitToWindowAct.isChecked()
self.scrollArea.setWidgetResizable(fitToWindow)
if not fitToWindow :
self.normalSize()
self.updateActions()
def createActions(self):
self.exitAct = QAction("E&xit", self)
self.exitAct.setShortcut("Ctrl+Q")
self.exitAct.triggered.connect(self.close)
#.........这里部分代码省略.........
示例9: storylineView
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
#.........这里部分代码省略.........
def refresh(self):
if not self._mdlPlots or not self._mdlOutline or not self._mdlCharacter:
return
if not self.isVisible():
return
LINE_HEIGHT = 18
SPACING = 3
TEXT_WIDTH = self.sldTxtSize.value()
CIRCLE_WIDTH = 10
LEVEL_HEIGHT = 12
s = self.scene
s.clear()
# Get Max Level (max depth)
root = self._mdlOutline.rootItem
def maxLevel(item, level=0, max=0):
if level > max:
max = level
for c in item.children():
m = maxLevel(c, level + 1)
if m > max:
max = m
return max
MAX_LEVEL = maxLevel(root)
# Get the list of tracked items (array of references)
trackedItems = []
if self.actPlots.isChecked():
trackedItems += self.plotReferences()
if self.actCharacters.isChecked():
trackedItems += self.charactersReferences()
ROWS_HEIGHT = len(trackedItems) * (LINE_HEIGHT + SPACING )
fm = QFontMetrics(s.font())
max_name = 0
for ref in trackedItems:
name = references.title(ref)
max_name = max(fm.width(name), max_name)
TITLE_WIDTH = max_name + 2 * SPACING
# Add Folders and Texts
outline = OutlineRect(0, 0, 0, ROWS_HEIGHT + SPACING + MAX_LEVEL * LEVEL_HEIGHT)
s.addItem(outline)
outline.setPos(TITLE_WIDTH + SPACING, 0)
refCircles = [] # a list of all references, to be added later on the lines
# A Function to add a rect with centered elided text
def addRectText(x, w, parent, text="", level=0, tooltip=""):
deltaH = LEVEL_HEIGHT if level else 0
r = OutlineRect(0, 0, w, parent.rect().height()-deltaH, parent, title=text)
r.setPos(x, deltaH)
txt = QGraphicsSimpleTextItem(text, r)
f = txt.font()
f.setPointSize(8)
fm = QFontMetricsF(f)
示例10: MainWindow
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
#.........这里部分代码省略.........
self.setSettingsObject(settings)
self.fallbacksAct.setEnabled(False)
def openPropertyList(self):
fileName, _ = QFileDialog.getOpenFileName(self, "Open Property List",
'', "Property List Files (*.plist)")
if fileName:
settings = QSettings(fileName, QSettings.NativeFormat)
self.setSettingsObject(settings)
self.fallbacksAct.setEnabled(False)
def openRegistryPath(self):
path, ok = QInputDialog.getText(self, "Open Registry Path",
"Enter the path in the Windows registry:", QLineEdit.Normal,
'HKEY_CURRENT_USER\\')
if ok and path != '':
settings = QSettings(path, QSettings.NativeFormat)
self.setSettingsObject(settings)
self.fallbacksAct.setEnabled(False)
def about(self):
QMessageBox.about(self, "About Settings Editor",
"The <b>Settings Editor</b> example shows how to access "
"application settings using Qt.")
def createActions(self):
self.openSettingsAct = QAction("&Open Application Settings...", self,
shortcut="Ctrl+O", triggered=self.openSettings)
self.openIniFileAct = QAction("Open I&NI File...", self,
shortcut="Ctrl+N", triggered=self.openIniFile)
self.openPropertyListAct = QAction("Open Mac &Property List...", self,
shortcut="Ctrl+P", triggered=self.openPropertyList)
if sys.platform != 'darwin':
self.openPropertyListAct.setEnabled(False)
self.openRegistryPathAct = QAction("Open Windows &Registry Path...",
self, shortcut="Ctrl+G", triggered=self.openRegistryPath)
if sys.platform != 'win32':
self.openRegistryPathAct.setEnabled(False)
self.refreshAct = QAction("&Refresh", self, shortcut="Ctrl+R",
enabled=False, triggered=self.settingsTree.refresh)
self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q",
triggered=self.close)
self.autoRefreshAct = QAction("&Auto-Refresh", self, shortcut="Ctrl+A",
checkable=True, enabled=False)
self.autoRefreshAct.triggered.connect(self.settingsTree.setAutoRefresh)
self.autoRefreshAct.triggered.connect(self.refreshAct.setDisabled)
self.fallbacksAct = QAction("&Fallbacks", self, shortcut="Ctrl+F",
checkable=True, enabled=False,
triggered=self.settingsTree.setFallbacksEnabled)
self.aboutAct = QAction("&About", self, triggered=self.about)
self.aboutQtAct = QAction("About &Qt", self,
triggered=QApplication.instance().aboutQt)
def createMenus(self):
self.fileMenu = self.menuBar().addMenu("&File")
self.fileMenu.addAction(self.openSettingsAct)
self.fileMenu.addAction(self.openIniFileAct)
self.fileMenu.addAction(self.openPropertyListAct)
self.fileMenu.addAction(self.openRegistryPathAct)
self.fileMenu.addSeparator()
self.fileMenu.addAction(self.refreshAct)
self.fileMenu.addSeparator()
self.fileMenu.addAction(self.exitAct)
self.optionsMenu = self.menuBar().addMenu("&Options")
self.optionsMenu.addAction(self.autoRefreshAct)
self.optionsMenu.addAction(self.fallbacksAct)
self.menuBar().addSeparator()
self.helpMenu = self.menuBar().addMenu("&Help")
self.helpMenu.addAction(self.aboutAct)
self.helpMenu.addAction(self.aboutQtAct)
def setSettingsObject(self, settings):
settings.setFallbacksEnabled(self.fallbacksAct.isChecked())
self.settingsTree.setSettingsObject(settings)
self.refreshAct.setEnabled(True)
self.autoRefreshAct.setEnabled(True)
niceName = settings.fileName()
niceName.replace('\\', '/')
niceName = niceName.split('/')[-1]
if not settings.isWritable():
niceName += " (read only)"
self.setWindowTitle("%s - Settings Editor" % niceName)
示例11: PlotterWindow
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
#.........这里部分代码省略.........
self._stop_action.toggled.connect(self._on_stop_toggled)
control_menu.addAction(self._stop_action)
self._pause_action = QAction(get_icon('pause'), '&Pause Updates', self)
self._pause_action.setStatusTip('While paused, new data will be accumulated in memory '
'to be processed once un-paused')
self._pause_action.setShortcut(QKeySequence('Ctrl+Shift+P'))
self._pause_action.setCheckable(True)
self._pause_action.toggled.connect(self._on_pause_toggled)
control_menu.addAction(self._pause_action)
control_menu.addSeparator()
self._reset_time_action = QAction(get_icon('history'), '&Reset', self)
self._reset_time_action.setStatusTip('Base time will be reset; all plots will be reset')
self._reset_time_action.setShortcut(QKeySequence('Ctrl+Shift+R'))
self._reset_time_action.triggered.connect(self._do_reset)
control_menu.addAction(self._reset_time_action)
#
# New Plot menu
#
plot_menu = self.menuBar().addMenu('&New Plot')
for idx, pl_name in enumerate(PLOT_AREAS.keys()):
new_plot_action = QAction('Add ' + pl_name, self)
new_plot_action.setStatusTip('Add new plot window')
new_plot_action.setShortcut(QKeySequence('Ctrl+Alt+' + str(idx)))
new_plot_action.triggered.connect(partial(self._do_add_new_plot, pl_name))
plot_menu.addAction(new_plot_action)
#
# Window stuff
#
self.statusBar().showMessage('Use the "New Plot" menu to add plots')
self.setCentralWidget(None)
self.resize(600, 400)
def _on_stop_toggled(self, checked):
self._pause_action.setChecked(False)
self.statusBar().showMessage('Stopped' if checked else 'Un-stopped')
def _on_pause_toggled(self, checked):
self.statusBar().showMessage('Paused' if checked else 'Un-paused')
def _do_add_new_plot(self, plot_area_name):
def remove():
self._plot_containers.remove(plc)
plc = PlotContainerWidget(self, PLOT_AREAS[plot_area_name], self._active_data_types)
plc.on_close = remove
self._plot_containers.append(plc)
docks = [
Qt.LeftDockWidgetArea,
Qt.LeftDockWidgetArea,
Qt.RightDockWidgetArea,
Qt.RightDockWidgetArea,
]
dock_to = docks[(len(self._plot_containers) - 1) % len(docks)]
self.addDockWidget(dock_to, plc)
if len(self._plot_containers) > 1:
self.statusBar().showMessage('Drag plots by the header to rearrange or detach them')
def _do_reset(self):
self._base_time = time.monotonic()
for plc in self._plot_containers:
try:
plc.reset()
except Exception:
logger.error('Failed to reset plot container', exc_info=True)
logger.info('Reset done, new time base %r', self._base_time)
def _update(self):
if self._stop_action.isChecked():
while self._get_transfer() is not None: # Discarding everything
pass
return
if not self._pause_action.isChecked():
while True:
tr = self._get_transfer()
if not tr:
break
self._active_data_types.add(tr.data_type_name)
for plc in self._plot_containers:
try:
plc.process_transfer(tr.ts_mono - self._base_time, tr)
except Exception:
logger.error('Plot container failed to process a transfer', exc_info=True)
for plc in self._plot_containers:
try:
plc.update()
except Exception:
logger.error('Plot container failed to update', exc_info=True)
示例12: TextEdit
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
#.........这里部分代码省略.........
dlg.addEnabledOption(QPrintDialog.PrintSelection)
dlg.setWindowTitle("Print Document")
if dlg.exec_() == QPrintDialog.Accepted:
self.textEdit.print_(printer)
del dlg
def filePrintPreview(self):
printer = QPrinter(QPrinter.HighResolution)
preview = QPrintPreviewDialog(printer, self)
preview.paintRequested.connect(self.printPreview)
preview.exec_()
def printPreview(self, printer):
self.textEdit.print_(printer)
def filePrintPdf(self):
fn, _ = QFileDialog.getSaveFileName(self, "Export PDF", None,
"PDF files (*.pdf);;All Files (*)")
if fn:
if QFileInfo(fn).suffix().isEmpty():
fn += '.pdf'
printer = QPrinter(QPrinter.HighResolution)
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName(fn)
self.textEdit.document().print_(printer)
def textBold(self):
fmt = QTextCharFormat()
fmt.setFontWeight(self.actionTextBold.isChecked() and QFont.Bold or QFont.Normal)
self.mergeFormatOnWordOrSelection(fmt)
def textUnderline(self):
fmt = QTextCharFormat()
fmt.setFontUnderline(self.actionTextUnderline.isChecked())
self.mergeFormatOnWordOrSelection(fmt)
def textItalic(self):
fmt = QTextCharFormat()
fmt.setFontItalic(self.actionTextItalic.isChecked())
self.mergeFormatOnWordOrSelection(fmt)
def textFamily(self, family):
fmt = QTextCharFormat()
fmt.setFontFamily(family)
self.mergeFormatOnWordOrSelection(fmt)
def textSize(self, pointSize):
pointSize = float(pointSize)
if pointSize > 0:
fmt = QTextCharFormat()
fmt.setFontPointSize(pointSize)
self.mergeFormatOnWordOrSelection(fmt)
def textStyle(self, styleIndex):
cursor = self.textEdit.textCursor()
if styleIndex:
styleDict = {
1: QTextListFormat.ListDisc,
2: QTextListFormat.ListCircle,
3: QTextListFormat.ListSquare,
4: QTextListFormat.ListDecimal,
示例13: SimulationGui
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
#.........这里部分代码省略.........
def _read_settings(self):
# add default settings if none are present
if not self._settings.contains("path/simulation_results"):
self._settings.setValue("path/simulation_results",
os.path.join(os.path.curdir,
"results",
"simulation"))
if not self._settings.contains("path/postprocessing_results"):
self._settings.setValue("path/postprocessing_results",
os.path.join(os.path.curdir,
"results",
"postprocessing"))
if not self._settings.contains("path/metaprocessing_results"):
self._settings.setValue("path/metaprocessing_results",
os.path.join(os.path.curdir,
"results",
"metaprocessing"))
if not self._settings.contains("control/autoplay_animation"):
self._settings.setValue("control/autoplay_animation", "False")
if not self._settings.contains("control/exit_on_batch_completion"):
self._settings.setValue("control/exit_on_batch_completion", "False")
def _write_settings(self):
""" Store the application state. """
pass
@pyqtSlot()
def update_autoplay_setting(self):
self._settings.setValue("control/autoplay_animation",
str(self.actAutoPlay.isChecked()))
@pyqtSlot()
def update_exit_on_batch_completion_setting(self, state=None):
if state is None:
state = self.actExitOnBatchCompletion.isChecked()
self._settings.setValue("control/exit_on_batch_completion", str(state))
def set_visualizer(self, vis):
self.visualizer = vis
self.vtkWidget.Initialize()
@pyqtSlot()
def play_animation(self):
"""
play the animation
"""
self._logger.debug("Starting Playback")
# if we are at the end, start from the beginning
if self.playbackTime == self.currentEndTime:
self.timeSlider.setValue(0)
self.actPlayPause.setText("Pause Animation")
self.actPlayPause.setIcon(QIcon(get_resource("pause.png")))
self.actPlayPause.triggered.disconnect(self.play_animation)
self.actPlayPause.triggered.connect(self.pause_animation)
self.playbackTimer.start(self.playbackTimeout)
@pyqtSlot()
def pause_animation(self):
"""
pause the animation
示例14: ObjectView
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
class ObjectView(QListView):
"""Shows cropped object images either in a grid or expanded
"""
def __init__(self, parent=None):
super(ObjectView, self).__init__(parent)
# Items are shown either in a grid or with a single item expanded
# When more than one item is selected, view changes to grid.
self.setItemDelegate(CropDelegate(self))
self.setFlow(self.LeftToRight)
self.setWrapping(True)
self.setResizeMode(self.Adjust)
self.setSelectionMode(QAbstractItemView.ExtendedSelection)
# Activating an item toggles the expanded state
self.activated.connect(self.toggle_expanded)
colour_scheme_choice().colour_scheme_changed.connect(self.colour_scheme_changed)
self._create_actions()
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)
def colour_scheme_changed(self):
"""Slot for colour_scheme_changed signal
"""
self.update()
def selectionChanged(self, selected, deselected):
"""QAbstractItemView slot
"""
debug_print('ObjectView.selectionChanged')
# Grid view unless exactly one item selected
if (self.expanded_action.isChecked() and
1 != len(self.selectionModel().selectedIndexes())):
self.grid_action.trigger()
super(ObjectView, self).selectionChanged(selected, deselected)
def show_grid(self, checked=False):
"""Shows the list as a grid of squares
"""
debug_print('ObjectView.show_grid')
self._refresh()
def show_expanded(self, checked=False):
"""Shows the first item of the selection expanded to fill the viewport.
If the selection is empty, the first item in the list is selected.
"""
debug_print('ObjectView.show_expanded')
# Select a single item
sm = self.selectionModel()
selected = sm.selectedIndexes()
if len(selected) > 1:
sm.select(selected[0], QItemSelectionModel.ClearAndSelect)
elif not selected:
sm.select(self.model().index(0, 0), QItemSelectionModel.Select)
self._refresh()
def toggle_expanded(self, index):
"""Selects 'index' and toggles the expanded state
"""
debug_print('ObjectView.toggle_expanded')
self.selectionModel().select(index, QItemSelectionModel.Select)
if self.expanded_action.isChecked():
self.grid_action.trigger()
else:
self.expanded_action.trigger()
def _refresh(self):
debug_print('ObjectView._refresh')
self.scheduleDelayedItemsLayout()
selected = self.selectionModel().selectedIndexes()
if selected:
self.scrollTo(selected[0])
def keyPressEvent(self, event):
"""QAbstractItemView virtual
"""
if event.key() in (Qt.Key_Return, Qt.Key_Enter):
# This logic reimplemented from QAbstractItemView::keyPressEvent,
# in src/gui/itemviews/qabstractitemview.cpp - make 'Enter' and
# 'Return' keys toggle the 'Expanded' / 'Grid' state on Mac OS X
if self.state() != QListView.EditingState or self.hasFocus():
#.........这里部分代码省略.........
示例15: __addDefaultActions
# 需要导入模块: from PyQt5.QtWidgets import QAction [as 别名]
# 或者: from PyQt5.QtWidgets.QAction import isChecked [as 别名]
def __addDefaultActions(self):
"""
Private slot to add the default user agent entries.
@return flag indicating that a user agent entry is checked (boolean)
"""
from . import UserAgentDefaults_rc # __IGNORE_WARNING__
defaultUserAgents = QFile(":/UserAgentDefaults.xml")
defaultUserAgents.open(QIODevice.ReadOnly)
menuStack = []
isChecked = False
if self.__url:
currentUserAgentString = self.__manager.userAgentForUrl(self.__url)
else:
from Helpviewer.HelpBrowserWV import HelpWebPage
currentUserAgentString = HelpWebPage().userAgent()
xml = QXmlStreamReader(defaultUserAgents)
while not xml.atEnd():
xml.readNext()
if xml.isStartElement() and xml.name() == "separator":
if menuStack:
menuStack[-1].addSeparator()
else:
self.addSeparator()
continue
if xml.isStartElement() and xml.name() == "useragent":
attributes = xml.attributes()
title = attributes.value("description")
userAgent = attributes.value("useragent")
act = QAction(self)
act.setText(title)
act.setData(userAgent)
act.setToolTip(userAgent)
act.setCheckable(True)
act.setChecked(userAgent == currentUserAgentString)
act.triggered.connect(self.__changeUserAgent)
if menuStack:
menuStack[-1].addAction(act)
else:
self.addAction(act)
self.__actionGroup.addAction(act)
isChecked = isChecked or act.isChecked()
if xml.isStartElement() and xml.name() == "useragentmenu":
attributes = xml.attributes()
title = attributes.value("title")
if title == "v_a_r_i_o_u_s":
title = self.tr("Various")
menu = QMenu(self)
menu.setTitle(title)
self.addMenu(menu)
menuStack.append(menu)
if xml.isEndElement() and xml.name() == "useragentmenu":
menuStack.pop()
if xml.hasError():
E5MessageBox.critical(
self,
self.tr("Parsing default user agents"),
self.tr(
"""<p>Error parsing default user agents.</p><p>{0}</p>""")
.format(xml.errorString()))
return isChecked