Rheinwerk Computing < openbook >

 
Inhaltsverzeichnis
1 Einleitung
2 Die Programmiersprache Python
Teil I Einstieg in Python
3 Erste Schritte im interaktiven Modus
4 Der Weg zum ersten Programm
5 Kontrollstrukturen
6 Dateien
7 Das Laufzeitmodell
8 Funktionen, Methoden und Attribute
9 Informationsquellen zu Python
Teil II Datentypen
10 Das Nichts – NoneType
11 Operatoren
12 Numerische Datentypen
13 Sequenzielle Datentypen
14 Zuordnungen
15 Mengen
16 Collections
17 Datum und Zeit
18 Aufzählungstypen – Enum
Teil III Fortgeschrittene Programmiertechniken
19 Funktionen
20 Modularisierung
21 Objektorientierung
22 Ausnahmebehandlung
23 Iteratoren
24 Kontextobjekte
25 Manipulation von Funktionen und Methoden
Teil IV Die Standardbibliothek
26 Mathematik
27 Kryptografie
28 Reguläre Ausdrücke
29 Schnittstelle zu Betriebssystem und Laufzeitumgebung
30 Kommandozeilenparameter
31 Dateisystem
32 Parallele Programmierung
33 Datenspeicherung
34 Netzwerkkommunikation
35 Debugging und Qualitätssicherung
36 Dokumentation
Teil V Weiterführende Themen
37 Anbindung an andere Programmiersprachen
38 Distribution von Python-Projekten
39 Grafische Benutzeroberflächen
40 Python als serverseitige Programmiersprache im WWW – ein Einstieg in Django
41 Wissenschaftliches Rechnen
42 Insiderwissen
43 Von Python 2 nach Python 3
A Anhang
Stichwortverzeichnis

Download:
- Beispielprogramme, ca. 464 KB

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Python 3 von Johannes Ernesti, Peter Kaiser
Das umfassende Handbuch
Buch: Python 3

Python 3
Pfeil 39 Grafische Benutzeroberflächen
Pfeil 39.1 Toolkits
Pfeil 39.2 Einführung in tkinter
Pfeil 39.2.1 Ein einfaches Beispiel
Pfeil 39.2.2 Steuerelementvariablen
Pfeil 39.2.3 Der Packer
Pfeil 39.2.4 Events
Pfeil 39.2.5 Steuerelemente
Pfeil 39.2.6 Zeichnungen – das Canvas-Widget
Pfeil 39.2.7 Weitere Module
Pfeil 39.3 Einführung in PyQt
Pfeil 39.3.1 Installation
Pfeil 39.3.2 Grundlegende Konzepte von Qt
Pfeil 39.3.3 Entwicklungsprozess
Pfeil 39.4 Signale und Slots
Pfeil 39.5 Wichtige Widgets
Pfeil 39.5.1 QCheckBox
Pfeil 39.5.2 QComboBox
Pfeil 39.5.3 QDateEdit, QTimeEdit, QDateTimeEdit
Pfeil 39.5.4 QDialog
Pfeil 39.5.5 QLineEdit
Pfeil 39.5.6 QListWidget, QListView
Pfeil 39.5.7 QProgressBar
Pfeil 39.5.8 QPushButton
Pfeil 39.5.9 QRadioButton
Pfeil 39.5.10 QSlider, QDial
Pfeil 39.5.11 QTextEdit
Pfeil 39.5.12 QWidget
Pfeil 39.6 Zeichenfunktionalität
Pfeil 39.6.1 Werkzeuge
Pfeil 39.6.2 Koordinatensystem
Pfeil 39.6.3 Einfache Formen
Pfeil 39.6.4 Grafiken
Pfeil 39.6.5 Text
Pfeil 39.6.6 Eye Candy
Pfeil 39.7 Model-View-Architektur
Pfeil 39.7.1 Beispielprojekt: ein Adressbuch
Pfeil 39.7.2 Auswählen von Einträgen
Pfeil 39.7.3 Bearbeiten von Einträgen
 
Zum Seitenanfang

39.5    Wichtige Widgets Zur vorigen ÜberschriftZur nächsten Überschrift

Nachdem wir anhand eines kleinen Beispielprogramms in die Arbeit mit Qt eingestiegen sind, werden in diesem Abschnitt die wichtigsten Widget-Klassen vorgestellt, die Qt zur Verfügung stellt. Dabei finden Sie für jedes Steuerelement eine knappe Einführung sowie eine Tabelle, die die wichtigsten Methoden und Signale auflistet.

 
Zum Seitenanfang

39.5.1    QCheckBox Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klasse QCheckBox repräsentiert eine Checkbox an der grafischen Benutzeroberfläche. Eine Checkbox ist ein Steuerelement, das vom Benutzer entweder aktiviert oder deaktiviert werden kann und dabei in seiner Bedeutung unabhängig von anderen Checkboxes ist.

Methode Beschreibung
checkState() Gibt den Status der Checkbox zurück. Gültige Status sind QtCore.Qt.Checked, QtCore.Qt.Unchecked oder QtCore.Qt.PartiallyChecked.
setCheckState(state) Setzt den Status der Checkbox. Hier können die Status gesetzt werden, die von checkState zurückgegeben werden.
Signal Beschreibung
stateChanged(int) Wird gesendet, wenn der Benutzer den Status der Checkbox ändert. Der neue Status wird als Parameter übergeben.

Tabelle 39.12    Wichtige Methoden und Signale von QCheckBox

 
Zum Seitenanfang

39.5.2    QComboBox Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klasse QComboBox repräsentiert eine Combobox, auch bekannt als Dropdown-Menü, auf der grafischen Benutzeroberfläche.

Methode Beschreibung
addItem([icon], text) Fügt ein Element mit dem Namen text zur Combobox hinzu. Optional kann eine QIcon-Instanz übergeben werden, um ein Icon neben dem Namen anzeigen zu lassen.
clear() Löscht alle Elemente der Combobox.
currentIndex()
currentText()
Gibt den Index bzw. den Namen des ausgewählten Elements zurück.
setModel(model) Setzt ein QAbstractItemModel.*
setView(itemView) Setzt einen QAbstractItemView.
Signal Beschreibung
currentIndexChanged(int) Wird gesendet, wenn sich das ausgewählte Element ändert. Der Index dieses Elements wird als Parameter übergeben.
* Näheres zur Model-View-Architektur von Qt erfahren Sie in Abschnitt 39.7.

Tabelle 39.13    Wichtige Methoden und Signale von QComboBox

 
Zum Seitenanfang

39.5.3    QDateEdit, QTimeEdit, QDateTimeEdit Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klassen QDateEdit, QTimeEdit und QDateTimeEdit repräsentieren Widgets, die eine Datumsangabe bzw. Zeitangabe vom Benutzer einlesen. Dem Benutzer wird zur Eingabe ein Kalender angezeigt.

Die folgenden Methoden beziehen sich auf den Umgang mit Datumsangaben bei QDateEdit- und QDateTimeEdit-Widgets. Die Methoden setMinimumTime, setMaximumTime, minimumTime, maximumTime, setTime und time funktionieren analog für Zeitangaben bei QDateTimeEdit- und TimeEdit-Widgets.

Methode Beschreibung
setMinimumDate(date)
setMaximumDate(date)
Setzt das kleinstmögliche bzw. größtmögliche Datum. Für date kann eine QDate- oder eine datetime.date-Instanz übergeben werden.
minimumDate()
maximumDate()
Gibt das kleinstmögliche bzw. größtmögliche Datum als QDate-Instanz zurück.
setDate(date) Setzt das im Widget angezeigte Datum.
date() Gibt das gewählte Datum als QDate-Instanz zurück.
Signal Beschreibung
dateChanged(QDate) Wird gesendet, wenn ein neues Datum ausgewählt wurde.
Signal Beschreibung
dateTimeChanged(QDateTime) Wird gesendet, wenn ein neues Datum oder ein neuer Zeitpunkt ausgewählt wurde.
timeChanged(QTime) Wird gesendet, wenn ein neuer Zeitpunkt ausgewählt wurde.

Tabelle 39.14    Wichtige Methoden und Signale von QDateEdit

 
Zum Seitenanfang

39.5.4    QDialog Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klasse QDialog repräsentiert einen Dialog in der grafischen Benutzeroberfläche. Ein Dialog kann wie jede andere Widget-Klasse verwendet werden, mit dem Unterschied, dass sich Dialoge nicht in andere Widgets einbetten lassen.

Grundsätzlich unterscheidet man zwei Arten von Dialogen – modale und nicht modale Dialoge:

  • Unter einem modalen Dialog versteht man einen Dialog, der sich im Vordergrund der Anwendung platziert und sich den Eingabefokus nimmt. Der Benutzer kann keine anderen Dialoge der Anwendung bedienen, während ein modaler Dialog geöffnet ist. Ein modaler Dialog bietet sich also für eine wichtige Teilkommunikation mit dem Benutzer an, die für den weiteren Programmlauf essenziell ist.
  • Dem gegenüber steht der nicht modale Dialog. Wird ein Dialog nicht modal geöffnet, kann er parallel zum restlichen Teil der Anwendung bedient werden. Ein bekanntes Beispiel für einen nicht modalen Dialog ist der Suchen-und-Ersetzen-Dialog in einem Textverarbeitungsprogramm, bei dem es dem Benutzer möglich sein muss, während des geöffneten Dialogs Änderungen im Hauptfenster vorzunehmen.

Um einen Dialog modal anzuzeigen, wird die Methode exec aufgerufen. Diese blockiert den Programmfluss so lange, bis der Benutzer den Dialog beendet hat. Der Rückgabewert von exec gibt an, in welcher Form der Dialog beendet wurde. Es wird eine der beiden Konstanten QtCore.Qt.Accepted und QtCore.Qt.Rejected zurückgegeben, wobei die erste ein Beenden des Dialogs über den OK- und die zweite ein Beenden über den Abbrechen-Button repräsentiert. Innerhalb der Dialogklasse können die Methoden accept und reject aufgerufen werden, um den Dialog mit dem entsprechenden Rückgabewert zu beenden.

Ein nicht modaler Dialog wird mithilfe der Methode show angezeigt. Diese Methode kehrt sofort zurück, ohne auf das Beenden des Dialogs zu warten, und ermöglicht auf diese Weise das parallele Verarbeiten von Dialog und Hauptanwendung.

 
Zum Seitenanfang

39.5.5    QLineEdit Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klasse QLineEdit repräsentiert ein einzeiliges Eingabefeld in der grafischen Benutzeroberfläche.

Methode Beschreibung
setText(text) Setzt den Text des Eingabefelds.
text() Gibt den Text des Eingabefelds zurück.
Signal Beschreibung
textChanged(QString) Wird gesendet, wenn der Text des Eingabefelds verändert wurde.

Tabelle 39.15    Wichtige Methoden und Signale von QLineEdit

 
Zum Seitenanfang

39.5.6    QListWidget, QListView Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klassen QListWidget und QListView repräsentieren Widgets zur Anzeige von Listen. Während es sich bei QListWidget um ein klassisches Widget handelt, verwendet QListView die Model-View-Architektur. Eine Einführung in das Konzept der Model-View-Programmierung anhand des QListView-Widgets finden Sie in Abschnitt 39.7. Ein QListWidget wird immer dann eingesetzt, wenn das Erstellen einer Model-View-Architektur für die anzuzeigenden Daten unverhältnismäßig aufwendig wäre und die Flexibilität, die eine Model-View-Architektur bietet, nicht benötigt wird.

Methode Beschreibung
addItem(label) Fügt einen Eintrag mit dem Namen label ans Ende der Liste an.
currentItem() Gibt den momentan ausgewählten Eintrag als QListWidgetItem-Instanz zurück. Den Namen des Eintrags finden Sie über die Methode text des Items heraus.
Signal Beschreibung
currentItemChanged( QListWidgetItem, QListWidgetItem) Wird gesendet, wenn ein neuer Eintrag ausgewählt wurde. Als Parameter werden der neu ausgewählte Eintrag und der zuvor ausgewählte Eintrag übergeben.

Tabelle 39.16    Wichtige Methoden und Signale von QListWidget

 
Zum Seitenanfang

39.5.7    QProgressBar Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klasse QProgressBar repräsentiert einen Fortschrittsbalken in einer grafischen Benutzeroberfläche. Ein Fortschrittsbalken zeigt den Fortschritt einer langwierigen Operation an. Das QProgressBar-Widget erlaubt dabei keine Interaktion mit dem Benutzer.

Methode Beschreibung
setMinimum(minimum)
setMaximum(maximum)
Setzt die ganzzahlige untere bzw. obere Grenze des Wertebereichs.
setValue(value) Setzt den aktuell darzustellenden Wert. Der Wert value muss ganzzahlig sein und in den angegebenen Grenzen liegen.
setOrientation(orientation) Setzt die Orientierung des Fortschrittsbalkens. Möglich sind die Werte QtCore.Qt.Horizontal und QtCore.Qt.Vertical für eine horizontale bzw. vertikale Ausrichtung.

Tabelle 39.17    Wichtige Methoden von QProgressBar

 
Zum Seitenanfang

39.5.8    QPushButton Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klasse QPushButton repräsentiert eine Schaltfläche in der grafischen Benutzeroberfläche. Eine Schaltfläche ist ein beschriftetes Widget, auf das der Benutzer klicken kann, um eine Aktion auszulösen.

Methode Beschreibung
setText(text) Setzt die Beschriftung der Schaltfläche.
Signal Beschreibung
clicked() Wird gesendet, wenn der Benutzer auf die Schaltfläche geklickt hat.

Tabelle 39.18    Wichtige Methoden und Signale von QPushButton

 
Zum Seitenanfang

39.5.9    QRadioButton Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klasse QRadioButton repräsentiert einen Radiobutton in der grafischen Benutzeroberfläche. Ein Radiobutton wird verwendet, um den Benutzer eine Auswahl aus mehreren vorgegebenen Möglichkeiten treffen zu lassen. Alle Radiobuttons eines Dialogs, die über dasselbe Eltern-Widget verfügen, gehören zu einer Gruppe. Innerhalb einer Gruppe kann immer nur ein Radiobutton aktiviert sein. Wenn der Benutzer einen anderen aktiviert, wird der vorher aktivierte deaktiviert. Um mehrere Gruppen von Radiobuttons in demselben Dialog unterzubringen, müssen diese über verschiedene Eltern-Widgets verfügen. Dazu bietet sich das Frame-Widget, repräsentiert durch die Klasse QFrame, an, das einem unsichtbaren Rahmen im Widget entspricht.

Methode Beschreibung
isChecked() Gibt den Status des Radiobuttons zurück.
Signal Beschreibung
toggled() Wird gesendet, wenn der Radiobutton aktiviert oder deaktiviert wurde.

Tabelle 39.19    Wichtige Methoden und Signale von QRadioButton

 
Zum Seitenanfang

39.5.10    QSlider, QDial Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klasse QSlider repräsentiert einen Slider in der grafischen Benutzeroberfläche. Bei einem Slider handelt es sich um einen Schieberegler, wie Sie ihn beispielsweise von einem Mischpult her kennen. Grundsätzlich wird ein Slider dazu verwendet, den Benutzer einen ganzzahligen Wert auswählen zu lassen, der innerhalb eines bestimmten Bereichs liegen muss. Die Klasse QDial funktioniert ähnlich wie QSlider, entspricht aber einem Drehregler anstelle eines Schiebereglers.

Methode Beschreibung
setMinimum(minimum)
setMaximum(maximum)
Setzt die ganzzahlige untere bzw. obere Grenze des Wertebereichs.
setValue(value) Setzt den aktuell darzustellenden Wert. Der Wert value muss ganzzahlig sein und in den angegebenen Grenzen liegen.
value() Gibt den momentan eingestellten Wert zurück.
setOrientation(orientation) Setzt die Orientierung des Sliders. Möglich sind die Werte QtCore.Qt.Horizontal und QtCore.Qt.Vertical für eine horizontale bzw. vertikale Ausrichtung.
Signal Beschreibung
valueChanged() Wird gesendet, wenn der eingestellte Wert des Sliders bzw. des Drehreglers verändert wurde.

Tabelle 39.20    Wichtige Methoden und Signale von QSlider und QDial

 
Zum Seitenanfang

39.5.11    QTextEdit Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klasse QTextEdit repräsentiert ein mehrzeiliges Eingabefeld in der grafischen Benutzeroberfläche. In ein solches Eingabefeld kann der Benutzer beliebigen Text schreiben.

Methode Beschreibung
setPlainText(text) Setzt den Text des Eingabefeldes.
toPlainText() Gibt den Text des Eingabefeldes zurück.
Signal Beschreibung
textChanged() Wird gesendet, wenn der Text des Eingabefeldes verändert wurde.

Tabelle 39.21    Wichtige Methoden und Signale von QTextEdit

 
Zum Seitenanfang

39.5.12    QWidget Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klasse QWidget ist die Basisklasse aller Steuerelemente und implementiert einen Großteil der steuerelementübergreifenden Funktionalität. Allgemein können Widgets in zwei Sorten unterteilt werden:

  • Der häufigste Fall ist ein untergeordnetes Widget. Ein solches untergeordnetes Widget wird relativ zu seinem Eltern-Widget (engl. parent) positioniert und kann nicht über die Ränder des Parent-Widgets hinausragen.
  • Ein Widget ohne Parent-Widget ist ein Fenster (engl. window). Theoretisch kann jede Instanz einer von QWidget abgeleiteten Klasse als Fenster dienen, beispielsweise also auch ein Button oder eine Checkbox. Praktisch ergibt dies jedoch wenig Sinn, und es werden nur geeignetere Klassen wie beispielsweise QDialog als Fenster verwendet.

Tabelle 39.22 listet die wichtigsten Eventhandler auf, die beim Auftreten verschiedener Events aufgerufen werden. Ein Eventhandler kann eingerichtet werden, indem eine selbst erstellte Klasse, die von QWidget direkt oder von einer Steuerelementklasse erbt, die genannte Methode implementiert.

Event Beschreibung
paintEvent(event) Wird aufgerufen, wenn das Widget neu gezeichnet werden muss. Die Methode bekommt eine QPaintEvent-Instanz übergeben.
resizeEvent(event) Wird aufgerufen, wenn das Widget in seiner Größe verändert wurde. Der Methode wird eine QResizeEvent-Instanz übergeben.
mousePressEvent(event) Wird aufgerufen, wenn der Benutzer mit der Maus auf das Widget klickt. Der Methode wird eine QMouseEvent-Instanz übergeben.
mouseMoveEvent(event) Wird aufgerufen, wenn der Benutzer die Maus bewegt, während er eine Maustaste gedrückt hält. Über die Methode setMouseTracking kann das Widget so eingestellt werden, dass die Methode auch gerufen wird, wenn der Benutzer die Maus bewegt, ohne eine Taste gedrückt zu halten.
keyPressEvent(event) Wird aufgerufen, wenn das Widget den Eingabefokus hat und der Benutzer eine Taste drückt. Wenn die Taste ausreichend lange gedrückt wird, wird die Methode keyPressEvent mehrfach aufgerufen. Es wird eine QKeyEvent-Instanz übergeben.

Tabelle 39.22    Events eines Widgets

 


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Python 3 Python 3
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: Einstieg in Python
Einstieg in Python


Zum Rheinwerk-Shop: Python. Der Grundkurs
Python. Der Grundkurs


Zum Rheinwerk-Shop: Algorithmen mit Python
Algorithmen mit Python


Zum Rheinwerk-Shop: Objektorientierte Programmierung
Objektorientierte Programmierung


Zum Rheinwerk-Shop: Raspberry Pi. Das umfassende Handbuch
Raspberry Pi. Das umfassende Handbuch


Zum Rheinwerk-Shop: Roboter-Autos mit dem Raspberry Pi
Roboter-Autos mit dem Raspberry Pi


Zum Rheinwerk-Shop: Neuronale Netze programmieren mit Python
Neuronale Netze programmieren mit Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2020
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern