Python QLabel内部QMenu

Python QLabel内部QMenu,python,qt,pyqt,pyqt4,Python,Qt,Pyqt,Pyqt4,我正在尝试将a添加到,因为我需要对文本进行文字包装。但它只是在菜单上添加了一个空行 #!/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

我正在尝试将a添加到,因为我需要对文本进行文字包装。但它只是在菜单上添加了一个空行

#!/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()


我做错了什么?

实例化
QWidgetAction

action = QWidgetAction(contextMenu)

您的代码在我的信号/插槽设置中运行良好。

以上代码在windows 8.0、Python 2.7.3-32位、PyQt v4.10.1、Qt v4.8.4上运行良好。您在Linux中使用的窗口管理器可能存在某种问题?可能Qt不支持在Unity的图标上下文菜单中嵌入小部件,或者根本不可能。你们都完全正确。它不与团结一起工作,而是与库本图和徐本图一起工作。我将进一步调查这是一个bug还是一个“特性”。我会接受这个答案。如果有证据的话,这就是答案。我试图找到indicators API,以确定是否可以将任意小部件放入其中,但没有发现任何有用的东西。我对Lubuntu/LXDE也有同样的问题,遗憾的是,这并没有得到修复,这对Unity没有帮助。其他DE可以使用
QMenu
QApplication