2014-04-18 4 views
2

QMenuQLabel을 추가하려고하는데 단어 줄 바꿈 텍스트가 있어야하기 때문입니다. 그러나 메뉴에 빈 줄을 추가하기 만하면됩니다. 내가 잘못 뭐하는 거지QMenu의 QLabel

#!/usr/bin/env python3 

import os 
import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

class My(object): 
    def __init__(self): 
     self.qapp = QApplication(sys.argv) 
     self.status_icon = QSystemTrayIcon(QIcon.fromTheme('edit-delete')) 
     contextMenu = QMenu() 

     label = QLabel('foobar') 
     action = QWidgetAction(self.qapp) 
     action.setDefaultWidget(label) 
     contextMenu.addAction(action) 

     self.status_icon.setContextMenu(contextMenu) 

    def run(self): 
     self.status_icon.show() 
     self.qapp.exec_() 

if __name__ == '__main__': 
    My().run() 

systrayicon

?

+1

위의 코드는 Windows 8.0, Python 2.7.3 - 32 비트, PyQt v4.10.1, Qt v4.8.4에서 유용합니다. 리눅스에서 사용하고있는 윈도우 매니저와 관련된 문제일까요? –

+1

Qt는 Unity의 아이콘 컨텍스트 메뉴에 위젯을 포함하는 것을 지원하지 않을 수도 있고 그렇지 않을 수도 있습니다. –

+0

당신은 모두 옳습니다. Unity와는 작동하지 않지만 쿠분투와 Xubuntu에서는 작동하지 않습니다. 이것이 버그인지 '기능'인지 더 자세히 조사 할 것입니다. 나는 이것을 대답으로 받아 들일 것이다. – Germar

답변

0

패스 QMenu 객체입니다 QWidgetAction

action = QWidgetAction(contextMenu) 

귀하의 코드 내 신호/슬롯 설정에서 잘 작동 인스턴스화 할 때.

+0

그것은 Unity에 도움이되지 않습니다. 다른 DE들은'QMenu'와'QApplication'을 가지고 있습니다. – Germar