2011-08-15 12 views
0

私はPyQtシステムトレイスクリプトを書いています。これは単にシステムサービスのためのスイッチです。私はこのコードを経由してQMenuにQActionsを追加している、私の目的は、緑色の実行中のサービスを示すと赤のサービスを停止する:QApplicationフォントの色

.... 
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ですが、この単純な操作では非常にうまくいくようです。

もっと簡単な方法を教えてもらえますか?

答えて

1

私が見ることができる唯一の簡単な方法は、あなたのQActionをチェック可能にすることです(そして、 "サービスはアクティブです"という項目をチェックしてください)。

スタイリングメニュー項目の例としては、ここで見つけることができます:Qt Style Sheets - Customizing QMenu

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)) 
....  
関連する問題