我在写一个PyQt系统托盘脚本。它只是系统服务的开关。我通过这段代码向QMenu添加QActions,我的目的是显示正在运行的服务为绿色,而停止的服务为红色:
....
for service, started in s.services.items():
action = self.menu.addAction(service)
if started: #It is my purpose, but obviously it doesn't work
action.setFontColor((0, 255, 0))
else:
action.setFontColor((255, 0, 0))
action.triggered.connect(functools.partial(self.service_clicked, service))
....
问题是,QAction没有setFontColor方法:)。它有一个setFont方法,但我在QFont文档中看不到颜色相关的方法。它不支持富文本格式。在
我找到了一个可能的解决方案here,但对于这个简单的操作来说,似乎要做很多工作。在
有谁能给我一个更简单的方法吗?在
我能看到的唯一简单的方法是使您的
QAction
可检查(并定义“服务是活动的”应该检查该项),然后使用Qt样式表以获得所需的效果。在在这里可以找到设置菜单项样式的示例:Qt Style Sheets - Customizing QMenu
不完全是你想要的,但是你可以简单地将与QAction相关的图标更改为红色或绿色的圆点:这样菜单文本不会改变颜色,但是圆点会改变颜色。在
相关问题 更多 >
编程相关推荐