QApplication字体C

2024-03-29 00:13:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在写一个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,但对于这个简单的操作来说,似乎要做很多工作。在

有谁能给我一个更简单的方法吗?在


Tags: 方法代码self目的脚本系统serviceaction
2条回答

我能看到的唯一简单的方法是使您的QAction可检查(并定义“服务是活动的”应该检查该项),然后使用Qt样式表以获得所需的效果。在

在这里可以找到设置菜单项样式的示例:Qt Style Sheets - Customizing QMenu

不完全是你想要的,但是你可以简单地将与QAction相关的图标更改为红色或绿色的圆点:这样菜单文本不会改变颜色,但是圆点会改变颜色。在

....
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.setIcon(QIcon(":/greendot.png"))
    else:
        action.setIcon(QIcon(":/reddot.png"))

    action.triggered.connect(functools.partial(self.service_clicked, service))
....    

相关问题 更多 >