2011-08-15 7 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 스타일 시트로 재생하는 것입니다. 당신이 원하는하지 정확히 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)) 
....  
관련 문제