Dieses Tutorial bietet eine umfassende Einführung in PyQt5s QPushButton
-Widget und seine Interaktion mit anderen Kernelementen. Wir bauen auf einer grundlegenden Button-Implementierung auf und untersuchen Styling-Techniken und Ereignisbehandlung, um interaktive und visuell ansprechende Anwendungen zu erstellen.
Inhaltsverzeichnis
- Einen Push-Button erstellen
- Den Push-Button stylen
- Button-Klicks behandeln: Signale und Slots
- Integration mit QLabel: Informationen anzeigen
- Erweitertes Styling mit QStyleSheet
1. Einen Push-Button erstellen
Das QPushButton
ist ein grundlegender Baustein in der PyQt5 GUI-Entwicklung. Erstellen wir einen einfachen Button:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Meine PyQt5 App")
button = QPushButton("Klicken Sie mich!")
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
Dieser Code erstellt ein Fenster mit einem Button mit der Beschriftung „Klicken Sie mich!“. Der Button ist derzeit inaktiv; wir fügen im nächsten Abschnitt Funktionalität hinzu.
2. Den Push-Button stylen
PyQt5 bietet verschiedene Möglichkeiten, das Aussehen Ihrer Buttons anzupassen. Wir können den Text, die Schriftart und sogar Icons hinzufügen:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtGui import QFont, QIcon
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Gestylter Button")
button = QPushButton("Klicken Sie mich!")
button.setFont(QFont('Arial', 12)) # Schriftart setzen
button.setIcon(QIcon('pfad/zu/ihrem/icon.png')) # Icon hinzufügen (ersetzen Sie dies mit Ihrem Icon-Pfad)
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
Denken Sie daran, 'pfad/zu/ihrem/icon.png'
durch den tatsächlichen Pfad zu Ihrer Icon-Datei zu ersetzen.
3. Button-Klicks behandeln: Signale und Slots
Um den Button interaktiv zu gestalten, verwenden wir Signale und Slots. Ein Signal wird emittiert, wenn ein Ereignis auftritt (wie ein Button-Klick), und ein Slot ist eine Funktion, die auf das Signal reagiert.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Interaktiver Button")
button = QPushButton("Klicken Sie mich!")
label = QLabel("Button noch nicht geklickt.")
layout = QVBoxLayout()
layout.addWidget(button)
layout.addWidget(label)
window.setLayout(layout)
def on_button_click():
label.setText("Button geklickt!")
button.clicked.connect(on_button_click) #Signal mit dem Slot verbinden
window.show()
sys.exit(app.exec_())
Dieses Beispiel verbindet das clicked
-Signal des Buttons mit der on_button_click
-Funktion, die ein Label aktualisiert, um anzuzeigen, dass der Button gedrückt wurde.
4. Integration mit QLabel: Informationen anzeigen
QLabel
-Widgets eignen sich ideal zum Anzeigen von Text oder Bildern neben Buttons. So kombinieren Sie sie:
# (Code aus Abschnitt 3 kann hier erweitert werden, um ein QLabel zum Anzeigen von Informationen einzuschließen)
(Der Code aus Abschnitt 3 kann leicht erweitert werden, um ein QLabel zum Anzeigen von Informationen einzuschließen. Der Kürze halber wird dies hier nicht explizit gezeigt, aber das Konzept wird im vorherigen Beispiel demonstriert.)
5. Erweitertes Styling mit QStyleSheet
Für komplexeres Styling verwenden Sie QStyleSheet. Dies ermöglicht es Ihnen, CSS-ähnliche Stile auf Ihre Widgets anzuwenden.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtCore import Qt
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("QStyleSheet Beispiel")
button = QPushButton("Klicken Sie mich!")
button.setStyleSheet("QPushButton { background-color: lightblue; color: darkblue; border-radius: 10px; padding: 10px; }")
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)
window.show()
sys.exit(app.exec_())
Dies verwendet QStyleSheet, um den Button mit hellblauem Hintergrund, dunkelblauem Text, abgerundeten Ecken und Padding zu stylen.