【问题标题】:QApplication Font ColorQApplication 字体颜色
【发布时间】:2011-10-27 15:49:27
【问题描述】:

我正在编写一个 PyQt 系统托盘脚本。它只是系统服务的一个开关。我正在通过此代码将 QActions 添加到 QMenu,我的目的是将正在运行的服务显示为绿色,将停止的服务显示为红色:

....
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,但是对于这个简单的操作来说似乎工作量很大。

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

【问题讨论】:

    标签: python qt pyqt


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-05
        • 2011-07-23
        • 2012-06-21
        • 1970-01-01
        • 1970-01-01
        • 2017-02-26
        • 2011-03-04
        • 2016-04-14
        相关资源
        最近更新 更多