【发布时间】:2014-06-03 09:16:12
【问题描述】:
我正在尝试将QLabel 添加到QMenu,因为我需要使用自动换行的文本。但它只是在菜单中添加了一个空行。
#!/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()
我做错了什么?
【问题讨论】:
-
以上代码适用于 Windows 8.0、Python 2.7.3 - 32 位、PyQt v4.10.1、Qt v4.8.4。您在 Linux 中使用的窗口管理器可能存在某种问题?
-
也许 Qt 不支持在 Unity 的图标上下文菜单中嵌入小部件,或者根本不可能。
-
你们都完全正确。它不适用于 Unity,但适用于 Kubuntu 和 Xubuntu。如果这是错误或“功能”,我将进一步调查。我会接受这个作为答案。
-
如果有任何证明链接,这将是一个答案。我试图找到指标 API 以了解是否可以将任意小部件放入其中,但没有发现任何有用的东西。
-
我在 Lubuntu / LXDE 上遇到了同样的问题,很遗憾这还没有解决