[PyQt] tooltips in menu: how?

Paolo Milani paolomilani at rocketmail.com
Wed Mar 18 17:21:08 GMT 2009


Hi! :)
I'm a newbie. I've searched in the docs, but I haven't found the solution.
I want to add tooltips to menu, but it doesn't work: tooltips are not displayed.  Suggestions?

my system: ubuntu linux 8.10 with kde 4..2 repository.

Many thanks. This is the code:



#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui, uic

class MainWindow(QtGui.QWidget):
  def __init__(self, parent=None):
    super(MainWindow, self).__init__(parent)
    self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
    self.setAttribute(QtCore.Qt.WA_GroupLeader)
    self.menuI = QtGui.QPushButton("Menu")
    self.menuI.setToolTip("Click here...")
    self.menuI.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)

    mainLayout = QtGui.QHBoxLayout()
    mainLayout.addWidget(self.menuI)
    self.setLayout(mainLayout)
    self.resize(49,40)
    self.setWindowTitle("Qt menu")

    self.clicAct0 = QtGui.QAction("0", self)
    self.clicAct0.setToolTip("tooltip 0")
    self.connect(self.clicAct0, QtCore.SIGNAL("triggered()"), self.clic)

    self.clicAct1 = QtGui.QAction("1", self)
    self.clicAct1.setToolTip("tooltip 1")
    self.connect(self.clicAct1, QtCore.SIGNAL("triggered()"), self.clic)

    self.clicAct2 = QtGui.QAction("2", self)
    self.clicAct2.setToolTip("tooltip 2")
    self.connect(self.clicAct2, QtCore.SIGNAL("triggered()"), self.clic)

    menu0 = QtGui.QMenu(self)
    menu0.addAction(self.clicAct0)
    menu0.addAction(self.clicAct1)
    menu0.addAction(self.clicAct2)

    menu1 = QtGui.QMenu(self)
    menu1.setTitle("submenu")
    menu1.setToolTip("tooltip submenu")

    menu1_0 = QtGui.QAction("subentry",self)
    menu1_0.setToolTip("tooltip subentry")

    self.connect(menu1_0, QtCore.SIGNAL("triggered()"), self.clic)
    menu1.addAction(menu1_0)
    menu0.addMenu(menu1)
    self.menuI.setMenu(menu0)

  def clic(self):
    print "clic"


def main():
  app = QtGui.QApplication(sys.argv)
  locale = QtCore.QLocale.system().name()
  appTranslator = QtCore.QTranslator()
  app.setApplicationName(app.translate("main", "qtmenu"))

  form = MainWindow()
  form.show()
  app.exec_()

if __name__ == "__main__":
  main()


      




More information about the PyQt mailing list