富文本不起作用
'def context_MenuEvent(self, event): #右键菜单
context_menu = QMenu(self)
#
color_del = context_menu.addAction('删除 | 标记')
for i in ['white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'gray']:
mysekect_menu = context_menu.addAction(f"标记 | {i}")
mysekect_menu.triggered.connect(self.code_tag)
mysekect_del = context_menu.addAction('<font color="red">删除</font> | <font color="black">自选</font>')
'
设置的富文本不起作用,是怎么回事,这是pyside6的代码, 是window平台 看起来你的代码中存在一些问题。让我来帮助你整理一下代码,并指出可能的问题。
1. 变量 `i` 没有定义,你需要在循环中定义或传递它。
2. 所有动作都需要连接相应的槽函数(例如 `self.code_tag`)。
这是一个简化的版本:
def context_MenuEvent(self, event):# 右键菜单
context_menu = QMenu(self)
color_del = context_menu.addAction('删除 | 标记')
for i in range(5):# 假设 i 的范围是 0 到 4
myselect_menu = context_menu.addAction(f"标记 | {i}")
myselect_menu.triggered.connect(self.code_tag)
myselect_del = context_menu.addAction('删除 | 自选')
# 显示菜单
context_menu.exec_(event.globalPos())
def code_tag(self):
# 这里实现你的标记逻辑
print("标记被点击")
确保你已经导入了必要的模块,例如 QMenu 等。如果还有其他问题,请补充更多细节。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2025-2-15 22:21
看起来你的代码中存在一些问题。让我来帮助你整理一下代码,并指出可能的问题。
1. 变量 `i` 没有定义, ...
mysekect_del = context_menu.addAction('<font color="red">删除</font> | <font color="black">自选</font>')这段代码的富文本没有起作用 rxts 发表于 2025-02-15 22:23
FishC 发表于 2025-2-15 22:21
看起来你的代码中存在 ...
在 PySide6(或 PyQt)中,默认情况下 QMenu 的动作文本不支持 HTML 富文本。如果你想使用富文本格式,你需要使用自定义的 QLabel 小部件来实现。
下面是一个使用 QLabel 作为动作项的示例:
from PySide6.QtWidgets import QApplication, QMainWindow, QMenu, QLabel, QAction
from PySide6.QtGui import QCursor
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('右键菜单示例')
self.setGeometry(100, 100, 600, 400)
self.setContextMenuPolicy(Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.context_MenuEvent)
def context_MenuEvent(self, event):# 右键菜单
context_menu = QMenu(self)
color_del = context_menu.addAction('删除 | 标记')
for i in range(5):# 假设 i 的范围是 0 到 4
myselect_menu = context_menu.addAction(f"标记 | {i}")
myselect_menu.triggered.connect(self.code_tag)
# 使用QLabel实现富文本
label = QLabel()
label.setText("删除 | <b>自选</b>")
action = QWidgetAction(self)
action.setDefaultWidget(label)
context_menu.addAction(action)
# 显示菜单
context_menu.exec_(QCursor.pos())
def code_tag(self):
# 这里实现你的标记逻辑
print("标记被点击")
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
这种方法利用 QLabel 设置富文本内容,然后将其包装在 QWidgetAction 中添加到菜单中。
你可以根据需要进行调整,确保符合作用。希望这能解决你的问题!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 ySide6 的 QMenu 并不会解析这些 HTML 标签,因此文本会原样显示,而不是渲染为富文本。
你可以通过 QWidgetAction,你可以在菜单项中添加自定义的 QWidget,从而实现富文本效果。
try this:
"""
1.QWidgetAction:
使用 QWidgetAction 将自定义的 QLabel 添加到菜单中。
QLabel 支持富文本(HTML),因此可以通过 <font> 标签设置文本颜色。
2.label.setAlignment(Qt.AlignCenter):
设置文本居中对齐,使菜单项看起来更美观。
3.context_menu.exec_(event.globalPos()):
在鼠标右键点击的位置显示菜单。
"""
from PySide6.QtWidgets import QMenu, QAction, QWidgetAction, QLabel
from PySide6.QtGui import QColor
from PySide6.QtCore import Qt
class MyWindow:
def context_MenuEvent(self, event):
context_menu = QMenu(self)
# 添加普通菜单项
color_del = context_menu.addAction('删除 | 标记')
# 添加带有颜色的菜单项
for i in ['white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'gray']:
myselect_menu = context_menu.addAction(f"标记 | {i}")
myselect_menu.triggered.connect(self.code_tag)
# 使用 QWidgetAction 添加富文本菜单项
widget_action = QWidgetAction(context_menu)
label = QLabel('<font color="red">删除</font> | <font color="black">自选</font>')
label.setAlignment(Qt.AlignCenter)
widget_action.setDefaultWidget(label)
context_menu.addAction(widget_action)
# 显示菜单
context_menu.exec_(event.globalPos())
def code_tag(self):
print("标记操作被触发")
页:
[1]