QApplication字体颜色

时间:2011-08-15 23:02:42

标签: python qt pyqt

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

有人能建议我更简单吗?

2 个答案:

答案 0 :(得分:1)

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

样式菜单项的示例可在此处找到:Qt Style Sheets - Customizing QMenu

答案 1 :(得分:1)

不完全符合您的要求,但您可以将与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))
....