Python 3.x Python PyQt5 QTableWidget上下文事件集合样式表子菜单背景色
我的PyQt5 QTableWidget中有一个上下文菜单Python 3.x Python PyQt5 QTableWidget上下文事件集合样式表子菜单背景色,python-3.x,pyqt5,stylesheet,qtablewidget,Python 3.x,Pyqt5,Stylesheet,Qtablewidget,我的PyQt5 QTableWidget中有一个上下文菜单 def contextMenuEvent(self, event): """Open context menu for selected items.""" selected_items = self.selectedItems() if selected_items: menu = QMenu(self) menu.setStyleSheet("""
def contextMenuEvent(self, event):
"""Open context menu for selected items."""
selected_items = self.selectedItems()
if selected_items:
menu = QMenu(self)
menu.setStyleSheet("""
QMenu {border: 1px inset grey; background-color: #fff; color: #000; padding: 0;}
QMenu:selected {background-color: #ddf; color: #000;}"""
)
# File submenu
file_menu = QMenu("File")
delete_action = file_menu.addAction("Delete")
menu.addMenu(file_menu)
# Format sub_menu
format_menu = QMenu("Format")
format_split_action = format_menu.addAction("Split address")
format_title_case_action = format_menu.addAction("Title Case")
menu.addMenu(format_menu)
menu.addSeparator()
# Quick links
menu.addAction("Split address")
menu.addAction("Title Case")
action = menu.exec_(self.mapToGlobal(event.pos()))
if action:
if action == format_title_case_action:
self.format_title_case()
elif action == format_split_action:
self.split_address()
elif action == delete_action:
self.remove_selected_rows()
样式表几乎按照我想要的方式设置菜单的格式,但它不会更改子菜单(文件和格式)的背景颜色,子菜单仍有灰色背景:
我假设我需要为子菜单样式向样式表添加另一个条目。有人知道我需要添加什么吗?样式表仅由应用到的小部件的子项继承。
如果将一个菜单添加到另一个菜单,它将不会使其成为它的子菜单,这是因为同一个菜单可以在多种情况下使用(从): 此菜单不具有菜单的所有权 解决方案是将主菜单设置为要应用样式表的每个子菜单的父菜单:
menu = QMenu(self)
menu.setStyleSheet("""
QMenu {border: 1px inset grey; background-color: #fff; color: #000; padding: 0;}
QMenu:selected {background-color: #ddf; color: #000;}
""")
file_menu = QMenu("File", menu)
或者,您也可以对以下各项执行相同的操作:
这不是您的情况,但值得注意的是,如果您在其他地方使用该子菜单,主菜单仍将是它的父菜单,因此将具有相同的样式表。完美,谢谢:-)我刚刚在每个子菜单中添加了“、menu”。例如,文件菜单=QMenu(“文件”,菜单)
file_menu = menu.addMenu("File")