PyQt5 - Dies ist ein Satz von Python-Bibliotheken, die Möglichkeiten zum Erstellen grafischer Benutzeroberflächen bieten. Es ermöglicht Entwicklern, plattformübergreifende Anwendungen mit einem umfangreichen Funktionsumfang einfach zu erstellen.
In diesem Artikel werden wir uns ansehen, wie Sie mit der Tastatur in PyQt5 interagieren. Wir werden die grundlegenden Methoden zur Handhabung von Tastatureingaben untersuchen, den Fokus automatisch zwischen den Steuerelementen umschalten und Tastaturereignisse für bestimmte Aktionen konfigurieren. Am Ende werden wir Ihnen eine Reihe von Beispielen zur Verfügung stellen, um Ihnen zu helfen, dieses Thema zu verstehen.
Arbeiten mit der Tastatur dies ist ein wesentlicher Bestandteil der Erstellung einer Benutzeroberfläche, da viele Aktionen wie Texteingabe, Navigation und sogar das Ausführen von Befehlen normalerweise über die Tastatur ausgeführt werden. Daher ist es wichtig zu wissen, wie man Tastenereignisse richtig behandelt und eine benutzerfreundliche Oberfläche erstellt.
Dieser Artikel wird sowohl für Anfänger als auch für erfahrene Entwickler nützlich sein, die sich über die Tastaturfunktionen in PyQt5 informieren und ihre Fähigkeiten beim Erstellen von Benutzeroberflächen verbessern möchten.
Grundlagen der Tastatur in PyQt5
Eine der Hauptfunktionen von PyQt5 ist die Handhabung von Tastatureingaben. Dazu können Sie die keyPressEvent() -Methode verwenden, die beim Drücken der Taste aufgerufen wird. Innerhalb dieser Methode können Sie festlegen, welche Aktionen ausgeführt werden sollen, wenn eine bestimmte Taste gedrückt wird.
Sie können beispielsweise den folgenden Code verwenden, um das Drücken der Eingabetaste zu verarbeiten:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabelclass MyWidget(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# Создаем вертикальный макетlayout = QVBoxLayout()# Создаем меткуself.label = QLabel("")# Добавляем метку в макетlayout.addWidget(self.label)# Устанавливаем макет для виджетаself.setLayout(layout)def keyPressEvent(self, event):# Проверяем, была ли нажата клавиша Enterif event.key() == Qt.Key_Enter:self.label.setText("Клавиша Enter была нажата")if __name__ == '__main__':app = QApplication([])window = MyWidget()window.show()app.exec_()
Wenn Sie in diesem Fall die Eingabetaste drücken, wird die Meldung "Die Eingabetaste wurde gedrückt" auf dem Bildschirm angezeigt.
Mit PyQt5 können Sie nicht nur Tastatureingaben verarbeiten, sondern auch andere Tastaturereignisse wie das Loslassen einer Taste (keyReleaseEvent()), das Eingeben von Zeichen (textInputEvent()), das Bewegen des Tastaturzeigers (focusInEvent() und focusOutEvent()) und viele andere.
Die Verwendung von PyQt5 zum Arbeiten mit der Tastatur ermöglicht daher die Erstellung interaktiver Anwendungen, die verschiedene Tastaturaktionen unterstützen, wodurch die Benutzeroberfläche für die Benutzer benutzerfreundlicher und intuitiver wird.
Eingeben von Text über die Tastatur
PyQt5 bietet praktische Tools zum Arbeiten mit der Tastatur und zur Texteingabe. Mithilfe verschiedener Methoden und Signale der QLineEdit-Klasse können Sie ein Texteingabefeld erstellen und die eingegebenen Werte verarbeiten.
Grundlegende Methoden zum Arbeiten mit Tastatur und Texteingabe in PyQt5:
- setText(text) - Legt den Text im Eingabefeld fest;
- text() - Gibt den aktuellen Text aus dem Eingabefeld zurück;
- setPlaceholderText(text) - Legt den Quickinfo-Text fest, der im Eingabefeld angezeigt wird;
- setEchoMode(mode) - Legt fest, wie der eingegebene Text angezeigt wird (z. B. Klartext, Passwort usw.).
Sie können Signale der QLineEdit-Klasse verwenden, um das Eingabeereignis zu behandeln, z. B.:
- TextChanged - Wird ausgelöst, wenn sich der Text im Eingabefeld ändert;
- returnPressed - wird ausgelöst, wenn die Eingabetaste gedrückt wird;
- editingFinished - Wird ausgelöst, wenn die Bearbeitung eines Eingabefeldes abgeschlossen ist (Fokus verloren geht oder auf ein anderes Element der Benutzeroberfläche geklickt wird).
Beispiel für die Verwendung von Methoden und Signalen der QLineEdit-Klasse zum Eingeben von Text über die Tastatur:
import sysfrom PyQt5.QtWidgets import QApplication, QLineEdit, QVBoxLayout, QWidgetdef on_text_changed():text = line_edit.text()print(f"Текст: ")app = QApplication(sys.argv)window = QWidget()layout = QVBoxLayout()line_edit = QLineEdit()line_edit.setPlaceholderText("Введите текст. ")line_edit.textChanged.connect(on_text_changed)layout.addWidget(line_edit)window.setLayout(layout)window.show()sys.exit(app.exec_())
In diesem Beispiel wird ein Fenster mit einem Texteingabefeld erstellt. Wenn Sie den Text in einem Feld ändern, wird die Funktion on_text_changed aufgerufen, die den aktuellen Text an die Konsole ausgibt. Es ist auch ein Eingabeaufforderungstext installiert, der im Eingabefeld angezeigt wird. Die Anwendung wird beendet, wenn das Fenster geschlossen wird.
Umgang mit Tastatureingaben
Wenn Sie mit PyQt5 arbeiten, können Sie Ereignisse im Zusammenhang mit Tastenanschlägen problemlos verarbeiten. Die Aufgabe, Tastatureingaben zu verarbeiten, wird im Wesentlichen durch eine Überladung der Standardmethoden der Klasse erreicht, die für das gewünschte Widget verantwortlich ist.
Eine der am häufigsten verwendeten Methoden zum Arbeiten mit der Tastatur ist die keyPressEvent() -Methode. Es wird jedes Mal ausgeführt, wenn Sie eine Taste innerhalb des Widgets drücken. Sie können diese Methode überschreiben, um Ihre eigene Tastaturereignisverarbeitungslogik hinzuzufügen.
Hier ist ein Beispiel, das zeigt, wie Sie die keyPressEvent() -Methode für ein QMainWindow-Widget überschreiben können :
from PyQt5.QtCore import Qtfrom PyQt5.QtGui import QKeyEventfrom PyQt5.QtWidgets import QMainWindowclass MyMainWindow(QMainWindow):def keyPressEvent(self, event: QKeyEvent):if event.key() == Qt.Key_Escape:self.close()
In diesem Beispiel haben wir eine Unterklasse namens MyMainWindow erstellt, die die keyPressEvent() -Methode überschreibt. Innerhalb der Methode überprüfen wir, ob die Escape-Taste gedrückt wurde. Wenn dies der Fall ist, rufen Sie die close() -Methode auf, um das Hauptanwendungsfenster zu schließen.
Alle verfügbaren Tastencodes befinden sich im QtCore-Modul.Qt . In diesem Beispiel haben wir Qt verwendet.Key_Escape für die Escape-Taste. Sie können jedoch je nach Bedarf auch andere Tastencodes verwenden.
Dies ist nur eine Möglichkeit, Tastenanschläge mit PyQt5 zu behandeln. PyQt5 hat auch andere Methoden und Ereignisse, mit denen Sie je nach Ihren spezifischen Anforderungen mit der Tastatur arbeiten können.
Zuweisen von Hotkeys
PyQt5 bietet die Möglichkeit, verschiedenen Aktionen in der Anwendung Hotkeys zuzuweisen. Hotkeys ermöglichen es dem Benutzer, Operationen schnell und bequem durchzuführen, ohne die Maus zu benutzen.
Verwenden Sie die Klasse, um Hotkeys in PyQt5 zuzuweisen QShortcut. Mit dieser Klasse können Sie eine bestimmte Tastenkombination einem Steckplatz zuordnen, der beim Drücken von Hotkeys ausgeführt wird.
Um einen Hotkey zu erstellen, müssen Sie zuerst eine Instanz der QShortcut-Klasse erstellen und die Tastenkombination mithilfe der Methode übergeben setKey. Dann müssen Sie das Signal anschließen activated dieser Hotkey zum entsprechenden Steckplatz.
Hier ist ein Beispiel, das Strg+Q der Aktion zum Schließen des Anwendungsfensters zuweist:
shortcut = QShortcut(QKeySequence("Ctrl+Q"), self)shortcut.activated.connect(self.close)
In diesem Beispiel erstellen wir eine Instanz der QShortcut-Klasse, übergeben mit der setKey-Methode Strg+Q an sie und verbinden dann das Activated-Signal mit dem Close-Steckplatz. Wenn der Benutzer Strg+ Q drückt, wird der Close-Steckplatz aufgerufen, der das Anwendungsfenster schließt.
Sie können Hotkeys für jede Aktivität in Ihrer App zuweisen. Sie können beispielsweise Hotkeys zum Kopieren, Einfügen, Abbrechen usw. zuweisen. Die Hauptsache ist, dass die Tastenkombination benutzerfreundlich ist und keine Konflikte mit anderen Tastenkombinationen in Ihrer Anwendung verursacht.
Arbeiten mit Zusatztasten
Sie können die Methoden der QKeyEvent-Klasse verwenden, um den Status der Modifikatortasten in PyQt5 zu bestimmen. Die QKeyEvent-Klasse stellt Informationen zum Drücken oder Loslassen einer Taste bereit, einschließlich Tastencodes und Statusinformationen für die Zusatztasten.
Beispiel für die Verwendung von Zusatztasten:
from PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import QApplication, QMainWindow, QLabelclass MyWindow(QMainWindow):def __init__(self):super().__init__()self.label = QLabel("Клавиша-модификатор не нажата")self.setCentralWidget(self.label)def keyPressEvent(self, event):if event.modifiers() & Qt.ShiftModifier:self.label.setText("Нажата клавиша-модификатор Shift")elif event.modifiers() & Qt.ControlModifier:self.label.setText("Нажата клавиша-модификатор Ctrl")elif event.modifiers() & Qt.AltModifier:self.label.setText("Нажата клавиша-модификатор Alt")else:self.label.setText("Клавиша-модификатор не нажата")if __name__ == "__main__":app = QApplication([])window = MyWindow()window.show()app.exec_()
Im obigen Beispiel wird die Klasse MyWindow erstellt, die von QMainWindow erbt. Die keyPressEvent-Methode behandelt das Tastenanschlagsereignis. Wenn Sie die Zusatztaste Umschalt, Strg oder Alt drücken, wird der Text im QLabel mit der gedrückten Zusatztaste aktualisiert. Wenn keine Zusatztaste gedrückt wird, bleibt der Text im QLabel unverändert.
Daher können Sie mit den Zusatztasten in PyQt5 arbeiten, um den Status der Zusatztasten zu bestimmen und zu verarbeiten, um zusätzliche Aktionen auszuführen, wenn Sie bestimmte Tasten drücken.