#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)
В результате он станет таким.
Вам не понравится белая часть стрелки.
Нет проблем, вы можете удалить их с помощью программы для рисования, но я не стал этого делать, потому что это было излишне.
Комментарии:
1. Большое спасибо за подробное описание. Но могу ли я любезно спросить, если я хочу, чтобы значок был возвращен к значку по умолчанию, есть ли локальный путь, по которому я могу получить его из (Py) Qt?
2. Нет, в этом нет необходимости, если вы используете значок по умолчанию, вы просто удаляете аргумент setStyleSheet. Если это так, вы можете автоматически использовать исходный. Если вы можете использовать free-paint.soft и задать соответствующий путь, вы можете изменить значок на что угодно, даже если это не курсор правой кнопки мыши (например, лицо человека или животного).