本文整理汇总了Python中PyQt5.QtWidgets.QScrollArea.contentsMargins方法的典型用法代码示例。如果您正苦于以下问题:Python QScrollArea.contentsMargins方法的具体用法?Python QScrollArea.contentsMargins怎么用?Python QScrollArea.contentsMargins使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QScrollArea
的用法示例。
在下文中一共展示了QScrollArea.contentsMargins方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: GlyphCollectionWidget
# 需要导入模块: from PyQt5.QtWidgets import QScrollArea [as 别名]
# 或者: from PyQt5.QtWidgets.QScrollArea import contentsMargins [as 别名]
#.........这里部分代码省略.........
if event.source() == self:
pos = event.posF()
self.currentDropIndex = int(self._columns * (pos.y() // self.squareSize) \
+ (pos.x() + .5*self.squareSize) // self.squareSize)
def pipeDragLeaveEvent(self, event):
self.currentDropIndex = None
def pipeDropEvent(self, event):
# TODO: consider dropping this check, maybe only subclasses should do it
# so as to dispatch but here we presumably don't need it
if event.source() == self:
insert = self.currentDropIndex
newGlyphNames = event.mimeData().text().split(" ")
font = self._glyphs[0].getParent()
# TODO: should glyphOrder change activate font.dirty?
newGlyphs = [font[name] for name in newGlyphNames]
# put all glyphs to be moved to None (deleting them would
# invalidate our insert indexes)
for index, glyph in enumerate(self._glyphs):
if glyph in newGlyphs:
self._glyphs[index] = None
# insert newGlyphs into the list
lst = self._glyphs[:insert]
lst.extend(newGlyphs+self._glyphs[insert:])
self._glyphs = lst
# now, elide None
self.currentDropIndex = None
self.glyphs = [glyph for glyph in self._glyphs if glyph != None]
# TODO: break this down into set width/set square
# TODO: see whether scrollArea gets resizeEvents
def _sizeEvent(self, width, squareSize=None):
sw = self._scrollArea.verticalScrollBar().width() + self._scrollArea.contentsMargins().right()
if squareSize is not None: self.squareSize = squareSize
columns = (width - sw) // self.squareSize
if not columns > 0: return
self._columns = columns
self.adjustSize()
def sizeHint(self):
# Calculate sizeHint with max(height, _scrollArea.height()) because if scrollArea is
# bigger than widget height after an update, we risk leaving old painted content on screen
return QSize(self._columns * self.squareSize,
max(math.ceil(len(self._glyphs) / self._columns) * self.squareSize, self._scrollArea.height()))
def computeCharacterSelected(self):
if self.characterSelectedCallback is None:
return
cnt = len(self.selection)
if cnt == 1:
elem = next(iter(self.selection))
self.characterSelectedCallback(self._glyphs[elem].name)
else:
self.characterSelectedCallback(cnt)
def _arrowKeyPressEvent(self, event):
count = event.count()
key = event.key()
modifiers = event.modifiers()
# TODO: it might be the case that self._lastSelectedCell cannot be None
# when we arrive here whatsoever
if self._lastSelectedCell is not None:
if key == Qt.Key_Up:
delta = -self._columns
elif key == Qt.Key_Down:
示例2: GlyphsCanvas
# 需要导入模块: from PyQt5.QtWidgets import QScrollArea [as 别名]
# 或者: from PyQt5.QtWidgets.QScrollArea import contentsMargins [as 别名]
class GlyphsCanvas(QWidget):
def __init__(self, font, glyphs, pointSize=defaultPointSize, parent=None):
super(GlyphsCanvas, self).__init__(parent)
# XXX: make canvas font-agnostic as in defconAppkit and use
# glyph.getParent() instead
self.font = font
self.fetchFontMetrics()
self.glyphs = glyphs
self.ptSize = pointSize
self.calculateScale()
self.padding = 10
self._showKerning = False
self._showMetrics = False
self._verticalFlip = False
self._lineHeight = 1.1
self._positions = None
self._selected = None
self.doubleClickCallback = None
self.pointSizeChangedCallback = None
self.selectionChangedCallback = None
self._wrapLines = True
self._scrollArea = QScrollArea(self.parent())
self._scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self._scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self._scrollArea.setWidget(self)
self.resize(581, 400)
def scrollArea(self):
return self._scrollArea
def calculateScale(self):
scale = self.ptSize / self.upm
if scale < 0.01:
scale = 0.01
self.scale = scale
def setShowKerning(self, showKerning):
self._showKerning = showKerning
self.update()
def setShowMetrics(self, showMetrics):
self._showMetrics = showMetrics
self.update()
def setVerticalFlip(self, verticalFlip):
self._verticalFlip = verticalFlip
self.update()
def setLineHeight(self, lineHeight):
self._lineHeight = lineHeight
self.update()
def setWrapLines(self, wrapLines):
if self._wrapLines == wrapLines:
return
self._wrapLines = wrapLines
if self._wrapLines:
sw = self._scrollArea.verticalScrollBar().width() + self._scrollArea.contentsMargins().right()
self.resize(self.parent().parent().parent().width() - sw, self.height())
self._scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self._scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
else:
sh = self._scrollArea.horizontalScrollBar().height() + self._scrollArea.contentsMargins().bottom()
self.resize(self.width(), self.parent().parent().parent().height() - sh)
self._scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self._scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.update()
def fetchFontMetrics(self):
self.ascender = self.font.info.ascender
if self.ascender is None:
self.ascender = 750
self.descender = self.font.info.descender
if self.descender is None:
self.descender = 250
self.upm = self.font.info.unitsPerEm
if self.upm is None or not self.upm > 0:
self.upm = 1000
def setGlyphs(self, newGlyphs):
self.glyphs = newGlyphs
self._selected = None
self.update()
def setPointSize(self, pointSize):
self.ptSize = int(pointSize)
self.calculateScale()
self.update()
def setSelected(self, selected):
self._selected = selected
if self._positions is not None:
cur_len = 0
line = -1
for index, li in enumerate(self._positions):
if cur_len + len(li) > self._selected:
pos, width = li[self._selected - cur_len]
line = index
break
#.........这里部分代码省略.........