Open Source im professionellen Einsatz

Widgets

In Qt gibt es eine Vielzahl verschiedener Widgets, die umfangreiche Aufgaben von GUI-Komponenten abdecken, unter [5] findet sich eine Übersicht zu Elementen und deren Stil. Alle Widgets sind bei Py Side als Module unterhalb des Moduls »QtGui« implementiert und somit nach der Anweisung »from PySide import QtGui« verfügbar. Listing 2 zeigt ein Beispielprogramm, das sich dreier häufig eingesetzter Widgets bedient. Es nimmt eine Texteingabe entgegen und gibt sie auf Knopfdruck wieder aus.

Listing 2

widget_example.py

01 import sys
02
03 from PySide import QtCore
04 from PySide import QtGui
05
06
07 class MyDialog(QtGui.QDialog):
08     def __init__(self, parent=None):
09         super(MyDialog, self).__init__(parent)
10
11         boxlayout = QtGui.QBoxLayout(QtGui.QBoxLayout.TopToBottom, self)
12
13         self.lineedit = QtGui.QLineEdit()
14         boxlayout.addWidget(self.lineedit)
15
16         self.button = QtGui.QPushButton("Abschicken")
17         self.button.clicked.connect(self.buttonClicked)
18         boxlayout.addWidget(self.button)
19
20         self.label = QtGui.QLabel()
21         boxlayout.addWidget(self.label)
22
23         self.setLayout(boxlayout)
24
25     def buttonClicked(self):
26         self.label.setText(self.lineedit.text())
27         self.lineedit.setText("")
28
29 if __name__ == "__main__":
30     app = QtGui.QApplication(sys.argv)
31     dialog = MyDialog()
32     sys.exit(dialog.exec_())

Die Klasse »MyDialog« ist von »QtDialog« abgeleitet (Zeile 7) und stellt ein GUI-Fenster zur Verfügung, das Widgets aufnimmt. Das Platzieren der Elemente erfolgt anhand eines Box-Layouts, das mit dem Parameter »QBoxLayout.TopToBottom« die Elemente zeilenweise von oben nach unten anordnet (Zeile 11). Py Side und Qt bieten natürlich viel umfangreichere Layout-Widgets an, zum Beispiel das »QGridLayout« , bei welchem der Programmierer die einzelnen GUI-Komponenten in mehreren Zeilen und Spalten anordnen kann.

Das Codebeispiel fügt dem Box-Layout nun der Reihe nach drei Elemente hinzu: Das »QLineEdit« dient zur Eingabe einer Textzeile. Für umfangreichere, mehrzeilige Eingaben käme »QTextEdit« zum Einsatz. Zur Interaktion mit dem Benutzer dient das nächste Element, ein »QPushButton« . Der Programmierer verwendet die Methode »connect()« des »clicked« -Signals von »QButton« , um die selbst gemachte Methode »self.buttonClicked« mit dem entsprechenden Ereignis zu verbinden (Zeile 17). Als dritte GUI-Komponente erzeugt das Listing ein »QLabel« zur Textausgabe, um den eingegebenen Text nach einem Klick auf den Button im Label anzuzeigen. Um die Elemente grafisch auszugeben, weist der Entwickler der Klasse »MyDialog« noch das Layout zu (Zeile 23), dem er zuvor die drei Widgets per »addWidget()« hinzugefügt hat.

Natürlich bieten Py Side und Qt noch eine Vielfalt weiterer GUI-Komponenten. Statt »QDialog« kann der Programmierer als Grundlage der grafischen Oberfläche auch ein »QMainWindow« [6] einsetzen. Es bietet neben Textfeldern, Buttons und Labels auch Platz für eine Menü- und Statusleiste sowie für Toolbars im oberen Teil des Fensters. Beispiele zur Verwendung unterschiedlichster Widgets finden sich unter [7] und [8].

GUI-Picasso

Nutzt der Programmierer prototypischer Applikationen geeignete Werkzeuge, bleibt ihm das recht mühsame Zusammenstellen der GUI-Elemente von Hand erspart. Der Entwicklerausgabe des Qt-Framework liegt die eigene Entwicklungsumgebung Qt Creator bei. Sie lässt sich von der offiziellen Projekthomepage [9] oder über den Paketmanager der Linux-Distributionen beziehen.

Obwohl er auf die Entwicklung mit der Programmiersprache C++ spezialisiert ist, unterstützt Qt Creator auch den Py-Side-Anwender bei der GUI-Gestaltung. Qt legte die Elemente der Benutzerschnittstelle in einem XML-Dateiformat in den UI-Dateien an.

Bei den Programmierarbeiten für diesen Artikel hat sich Qt Creator in den Versionen 1.3.1 und 2.2.1 bewährt. Beide beherrschen das Erstellen von UI-Dateien, die sich als Textformat in eine Versionsverwaltung einspielen lassen. Qt Creator unterstützt die gängigsten Systeme wie Git, Subversion, CVS, Bazaar sowie Mercurial und nimmt die Versionierung über Aufrufe der Kommandozeilen-Programme vor.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook