[PyKDE] KSystemTray issues

mbouchar mbouchar at bioinfo.ulaval.ca
Tue Jun 21 13:04:29 BST 2005

Your application doesn't seems to have a name.
I had the same problem when using KStdAction to generate the help menu.

To give a name to your application, you must use KAboutData

This is a modified example of an application I'm developping :

from xxx import version

def getAboutData():
    # Adding informations about the program
    aboutData = KAboutData(version.__program__, version.__program__,
                           version.__version__, version.__description__,
                           KAboutData.License_GPL_V2, version.__copyright__)
    for author in version.__authors__:
        aboutData.addAuthor(author["name"], "", author["email"])
    return aboutData

if __name__ == "__main__":
    # Adding some parameters to the application
    sys.argv.extend(['--icon', 'source_py', '--caption',
                     version.__description__ + ' v' + version.__version__])
    aboutData = getAboutData()

    # Initialisation with KCmdLineArgs to use KAboutData
    KCmdLineArgs.init(sys.argv, aboutData)
    # Adding command line options
    KCmdLineArgs.addCmdLineOptions([("+file", "xxx file to open", "")])

    # KApplication with empty arguments, as the application
    # instance is already created
    kapp = KApplication()

Shahar Weiss wrote:

>Hello everyone.
>I have a little problem with a python script of mine, using the KSystemTray 
>This is the code below (dirty I know), and here's a link to a screenshot: 
>The problem is the "unknown" caption which appears on top of the system tray 
>icon's menu. Can you please tell me what I'm doing wrong?
>Here's the code:
>from qt import *
>from kdecore import *
>from kdeui import *
>from updateform import *
>import sys
>if __name__ == "__main__":
>	def processUpdateFile(fileString, ListView):
>		updateFile = open(fileString, 'r')
>		packageList = updateFile.readlines()
>		updateFile.close()
>		for i in range(len(packageList)):
>			packageString=packageList[i].split(' ')
>			package = QListViewItem(ListView, packageString[0], packageString[1], 
>	app = KApplication(sys.argv, "Updater")
>	form = UpdateForm()
>	trayicon = KSystemTray(form, "System Updater")
>	trayicon.setPixmap( QPixmap("konsole.png") )
>	trayicon.setCaption("New updates are available")
>	trayicon.contextMenu().insertTitle("System Update")
>#	b=KPopupMenu()
>#	b.insertTitle("Testing")
>#	trayicon.contextMenuAboutToShow(b)
>	trayicon.show()
>	form.show()
>	processUpdateFile('/home/sweiss/testpac.txt',form.packageListView)
>	app.setMainWidget(form)
>	app.exec_loop()
>	trayicon.hide()
>Thanks in advance,
>PyKDE mailing list    PyKDE at mats.imk.fraunhofer.de

More information about the PyQt mailing list