Sophie

Sophie

distrib > Mandriva > current > i586 > media > main-updates > by-pkgid > b77dda48f87d4eda8cc559e40c49a652 > files > 1199

python-kde4-doc-4.4.5-0.2mdv2010.2.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>Hello, World</title>
  <meta name="GENERATOR" content="Quanta Plus">
  <meta name="AUTHOR" content="Jim Bublitz">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<span style="font-size : 10pt;">
<h1>Tutorial - First Program</h1>
<h3>Hello, World</h3>
<p>
This is the first tutorial for PyKDE4. 
</p>
<p>
PyKDE is a set of bindings for KDE's kdelibs. That means it provides programming access
to KDE's basic classes and methods directly from the Python programming language.
</p>
<p>
This tutorial does a thorough dissection of a simple program - the traditional "Hello, World"
program. You can see the complete source code for this program (and other tutorial programs and
example programs) in the <b>Source</b> on pykdedocs. You can also run the program just by
clicking a button in the <b>Sample</b> tab of pykdedocs (or you can run the program from the
command line as well).
</p>

<h3>Basics</h3>
<p>
The first section of most Python programs is the import section, where the programmer specifies
the Python modules the program will use
</p>
<pre style="background-color : #f0f8ff;">

import sys

from PyQt4.QtCore import QString

from PyKDE4.kdecore import ki18n, KAboutData, KCmdLineArgs
from PyKDE4.kdeui import KApplication, KGuiItem, KMessageBox

</pre>
<p>
In our import section, we import the <i>sys</i> mdoule to get <i>sys.argv</i> for the command
line arguments. We also need one class from PyQt (<i>QString</i>) and a method (<i>ki18n</i>)
and a number of classes from PyKDE's <b><i>kdecore</i></b> and <b><i>kdeui</i></b> modules.
</p>
<p>
The next section is fairly typical code for the startup of most PyKDE programs (KDE programs written
in C++ follow similar steps).
</p>
<p>
First, we define some variables:
</p>
<pre style="background-color : #f0f8ff;">
file:///home/jim/pykdedocs/tutorials/started/helloworld.html
appName     = "helloworld"
catalog     = ""
programName = ki18n ("helloworld")
version     = "1.0"
description = ki18n ("Tutorial - First Program")
license     = KAboutData.License_GPL
copyright   = ki18n ("(c) 2007 Jim Bublitz")
text        = ki18n ("none")
homePage    = "www.riverbank.com"
bugEmail    = "jbublitz@nwinternet.com"

</pre>
<p>
The <i>k18n</i> calls used to wrap some of the character strings are part of KDE's localization
(translation) features. In this case they're required, because we want to use the variables in
creating a KAboutData object:
</p>
<pre style="background-color : #f0f8ff;">

aboutData   = KAboutData (appName, catalog, programName, version, description,
                            license, copyright, text, homePage, bugEmail)

</pre>
<p>
<i>KAboutData</i> is the class that fills in the data in the About box you can pop up from the Help menu.
</p>
<p>
In the <i></i>KAboutData</i> constructor (the method call that creates the KAboutData object), the arguments
programName, description, copyright, and text are all of type <i>KLocalizedString</i> (see the <i>KAboutData</i>
class reference page - select kdecore - global - KAboutData from the tree on the left side of pykdedocs).
</p>
<p>
About the only way to create an object of <i>KLocalizedString</i> type is to use the ki18n function.
</p>
<p>
Nearly every PyKDE program also require and call to <i>KCmdLineArgs.init</i>, or something effecitively the same.
In order to create a <i>KApplication</i> object to run our program, we need to call this method with the command
line arguments entered when the program was started (<i>sys.argv)</i> and a valid <i>KAboutData</i> object.
</p>
<pre style="background-color : #f0f8ff;">
KCmdLineArgs.init (sys.argv, aboutData)
</pre>
<p>
Since we want this to be a KDE-based application and have access to KDE's other components, we have to create
a <i>KApplication</i> object. Programs without a <i>KApplication</i> object won't be able to access much
of PyKDE, since most of KDE's components depend on the existence of this object.
</p>
<pre style="background-color : #f0f8ff;">
app = KApplication ()
</pre>
<p>
Next, we create a <i>KGuiItem</i> to handle some basic information - some text ("Hello"), no icon (the
empty <i>QString ()</i> constructor), a tooltip and a "what's this?" entry.
</p>
<pre style="background-color : #f0f8ff;">

guiItem = KGuiItem (QString( "Hello"), QString(),
                    QString( "this is a tooltip" ),
                    QString( "this is a whatsthis" ))

</pre>
<p>
Finally, we pop up a <i>KMessageBox</i> dialog to display our message.
</p>
<pre style="background-color : #f0f8ff;">
KMessageBox.questionYesNo (None, "Hello World", "Hello", guiItem )
</pre>
<h3>Final Notes</h3>
<p>
You may have noted that we didn't explicitly create a <i>KMessageBox</i> object to create the message box. That's
because most of the <i>KMessageBox</i> methods are <i>static</i> - we can call them directly without creating
an object. (<i>The KCmdLineArgs.init</i> call is also a static method - we didn't create a <i>KCmdLineArgs</i>
object before using <i>KCmdLineArgs.init</i>.
</p>
<p>
There are also two things missing from this program that most PyKDE applications have - a KMainWindow and a call
to KApplication.exec_. Those are covered in the next Tutorial.
</p>
<h4>Acknowledgement</h4>
This tutorial is based on the original KDE "Hello, World" tutorial found on
<a href="http://techbase.kde.org/Development/Tutorials/First_program">Techbase</a>.

</span>
</body>
</html>