当前位置: 首页>>代码示例>>Python>>正文


Python QMenu.close方法代码示例

本文整理汇总了Python中PyQt5.QtWidgets.QMenu.close方法的典型用法代码示例。如果您正苦于以下问题:Python QMenu.close方法的具体用法?Python QMenu.close怎么用?Python QMenu.close使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PyQt5.QtWidgets.QMenu的用法示例。


在下文中一共展示了QMenu.close方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: BrushSizeWidget

# 需要导入模块: from PyQt5.QtWidgets import QMenu [as 别名]
# 或者: from PyQt5.QtWidgets.QMenu import close [as 别名]
class BrushSizeWidget(QToolButton):
    ICON_SIZE = (12, 12)
    BUTTON_SIZE = (40, 30)
    ITEM_SIZE = (100, 20)
    MARGIN = 7
    brushSizeChanged = pyqtSignal(int)

    def __init__(self, size=10, min_size=1, max_size=100, parent=None):
        super(BrushSizeWidget, self).__init__(parent)
        self._size = size
        self._min_size = min_size
        self._max_size = max_size
        self.initUI()
        self.connectUI()

    def initUI(self):
        self.setPopupMode(QToolButton.MenuButtonPopup)
        self.menu = QMenu(self)
        self.setMenu(self.menu)
        self.setFixedSize(*self.BUTTON_SIZE)
        self.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
        self.listWidget = self.createListWidget()
        self.listWidget.installEventFilter(self)
        action = QWidgetAction(self)
        action.setDefaultWidget(self.listWidget)
        self.menu.addAction(action)
        self.updateIcon()

    def connectUI(self):
        self.listWidget.itemClicked.connect(self.selectSize)

    def selectSize(self, item):
        self.menu.close()
        self._size = item.data(Qt.UserRole)
        self.updateIcon()
        self.brushSizeChanged.emit(self._size)

    def eventFilter(self, watched, event):
        if (event.type() == QEvent.KeyPress and
            event.matches(QKeySequence.InsertParagraphSeparator)):
            self.selectSize(self.listWidget.currentItem())
        return super(BrushSizeWidget, self).eventFilter(watched, event)

    def value(self):
        return self._size

    def createListWidget(self):
        listWidget = QListWidget()
        w, h = self.ITEM_SIZE
        scroll_size = 16
        listWidget.setFixedWidth(w + scroll_size)
        listWidget.setAttribute(Qt.WA_MacShowFocusRect, False)
        for x in xrange(self._min_size, self._max_size):
            h = max(x + self.MARGIN * 2.0, h)
            pixmap = QPixmap(w, h)
            pixmap.fill(Qt.transparent)
            painter = QPainter(pixmap)
            center = h / 2.0
            painter.fillRect(QRectF(self.MARGIN, center - x / 2.0,
                                    w - self.MARGIN * 2.0, x), Qt.black)
            painter.end()
            label = QLabel()
            label.setPixmap(pixmap)
            item = QListWidgetItem(listWidget)
            item.setSizeHint(QSize(w, h))
            item.setData(Qt.UserRole, x)
            listWidget.addItem(item)
            listWidget.setItemWidget(item, label)
            if self._size == x:
                listWidget.setCurrentItem(item)
        return listWidget

    def updateIcon(self):
        self.setText(str(self._size))
        w, h = self.ICON_SIZE
        pixmap = QPixmap(w, h)
        pixmap.fill(Qt.transparent)
        painter = QPainter(pixmap)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setBrush(Qt.black)
        preview_size = min(w - 1, self._size)
        center = (w - preview_size) / 2.0
        painter.drawEllipse(QRect(center, center, preview_size, preview_size))
        painter.end()
        self.setIcon(QIcon(pixmap))
        self.setIconSize(QSize(w, h))
开发者ID:xsyann,项目名称:mediocre,代码行数:88,代码来源:brush_size.py


注:本文中的PyQt5.QtWidgets.QMenu.close方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。