Изменение значка во вложенных меню

#python #pyqt #pyqt4 #qmenu

#python #pyqt #pyqt4 #qmenu

Вопрос:

Я не думаю, что это может быть возможным, но я все еще хочу попробовать спросить. На прилагаемом скриншоте у меня есть вложенные меню.

Можно ли изменить значок клавиш со стрелками как «выделенный» красным прямоугольником?

Я пытаюсь изменить клавишу со стрелкой на значок плюса, если не найдены пункты подменю. Стрелка по умолчанию может использоваться, если найдены пункты подменю.

введите описание изображения здесь

Комментарии:

1. Это будет pyqt4

Ответ №1:

Да, вы можете изменить цвет стрелки вправо.

Но есть хитрость, чтобы изменить его.

Истинность индикатора — «ветвь-закрытый png-файл»

Вы можете увидеть файл png почти внизу страницы по ссылке.

Таким образом, это не может быть решено чисто программным способом.

Вы сами готовите картинку заранее.

и, пожалуйста, следуйте коду в QMenu конструкторе.

 self.setStyleSheet("QMenu::right-arrow{image:url(stylesheet-branch-closed-red.png);}")
  

Внимание:

stylesheet-branch-closed-red.png это мое переименованное изображение.

Вы можете загрузить исходное изображение со страницы ссылки выше.

щелкните правой кнопкой мыши изображение в формате png и сохраните как имя.

Этот код взят из вашего прошлого вопроса.

 class QCustomMenu(QtGui.QMenu):
    """Customized QMenu."""

    def __init__(self, title, parent=None):
        super(QCustomMenu, self).__init__(title=str(title), parent=parent)
        self.setup_menu()
        self.setStyleSheet("QMenu::right-arrow{image:url(stylesheet-branch-closed-red.png);}")
    def setup_menu(self):
        self.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)        
    def contextMenuEvent(self, event):
        no_right_click = [QAddAction]
        if any([isinstance(self.actionAt(event.pos()), instance) for instance in no_right_click]):
            return
        pos = event.pos()

    def addAction(self, action):
        super(QCustomMenu, self).addAction(action)
  

В результате он станет таким.

Вам не понравится белая часть стрелки.

Нет проблем, вы можете удалить их с помощью программы для рисования, но я не стал этого делать, потому что это было излишне.

ветка-png

Комментарии:

1. Большое спасибо за подробное описание. Но могу ли я любезно спросить, если я хочу, чтобы значок был возвращен к значку по умолчанию, есть ли локальный путь, по которому я могу получить его из (Py) Qt?

2. Нет, в этом нет необходимости, если вы используете значок по умолчанию, вы просто удаляете аргумент setStyleSheet. Если это так, вы можете автоматически использовать исходный. Если вы можете использовать free-paint.soft и задать соответствующий путь, вы можете изменить значок на что угодно, даже если это не курсор правой кнопки мыши (например, лицо человека или животного).