Überblick über den Code
import sys
from PySide6.QtCore import Qt
from PySide6.QtWidgets import (
QApplication, QLabel, QVBoxLayout, QHBoxLayout,
QPushButton, QListWidget, QListWidgetItem, QTextEdit,
QLineEdit, QGridLayout, QMenu,QWidget
)
Diese Bibliothek bietet Python-Bindings für das Qt-Framework, das für die Erstellung von grafischen Benutzeroberflächen (GUIs) verwendet wird.
Importierte Module und Klassen
sys
: Ein eingebautes Python-Modul, das Zugriff auf einige Variablen und Funktionen bietet, die vom Python-Interpreter verwendet oder verwaltet werden.- Von
PySide6.QtCore
:Qt
: Diese Klasse bietet grundlegende nicht-GUI-Funktionalitäten.
- Von
PySide6.QtWidgets
:QApplication
: Die Basis-Klasse für alle Qt-Anwendungen.QLabel
: Ein Widget zum Anzeigen von Text oder Bildern.QVBoxLayout
undQHBoxLayout
: Layout-Klassen für die vertikale bzw. horizontale Anordnung von Widgets.QPushButton
: Ein Befehlsschaltfläche.QListWidget
undQListWidgetItem
: Widgets zum Anzeigen einer Liste von Elementen.QTextEdit
: Ein Widget zum Bearbeiten und Anzeigen von einfachem und reichhaltigem Text.QLineEdit
: Ein Widget zum Eingeben und Bearbeiten einer einzelnen Zeile von einfachem Text.QGridLayout
: Ein Layout, das Widgets in einem Raster anordnet.QMenu
: Ein Menü-Widget für die Verwendung in Menüs, Kontextmenüs und anderen Popup-Menüs.QWidget
: Die Basis-Klasse aller Benutzeroberflächenobjekte.
https://doc.qt.io/qtforpython-6/overviews/widget-classes.html
michi@sysvorOrt ~/programmierung/python/qt/typeitin $ python typeitin-pyside.py
Traceback (most recent call last):
File „/home/michi/programmierung/python/qt/typeitin/typeitin-pyside.py“, line 17, in
app = QtWidgets.QApplication([])
^^^^^^^^^
NameError: name ‚QtWidgets‘ is not defined. Did you mean: ‚QWidget‘?
Der Fehler tritt auf, weil QtWidgets
nicht importiert wurde. Es scheint, dass Sie die notwendigen Importe am
Anfang Ihres Skripts vergessen haben. Hier ist, wie Sie das Problem
beheben können:from PySide6 import QtWidgets, QtCore
import sys
from PySide6.QtCore import Qt
from PySide6.QtWidgets import (
QApplication, QWidget, QLabel, QVBoxLayout, QHBoxLayout,
QPushButton, QListWidget, QListWidgetItem, QTextEdit,
QLineEdit, QGridLayout, QMenu
)
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Typeitin")
# Haupt-Layout erstellen
main_layout = QVBoxLayout()
self.setLayout(main_layout) # Setzen Sie das Layout für das Hauptfenster
if __name__ == "__main__":
app = QApplication(sys.argv) # Verwenden Sie sys.argv statt einer leeren Liste
window = MainWindow() # Erstellen Sie eine Instanz von MainWindow
window.show()
sys.exit(app.exec()) # Verwenden Sie sys.exit und app.exec() (ohne Unterstrich in neueren Versionen)
Häufig verwendete Werkzeuge:
import sys
from PySide6.QtCore import Qt
from PySide6.QtWidgets import (
QApplication, QWidget, QLabel, QVBoxLayout, QHBoxLayout,
QPushButton, QListWidget, QListWidgetItem, QTextEdit,
QLineEdit, QGridLayout, QMenu
)
michi@sysvorOrt ~/programmierung/python/qt/typeitin $ python typeitin-pyside.py
Traceback (most recent call last):
File "/home/michi/programmierung/python/qt/typeitin/typeitin-pyside.py", line 2, in
from PySide6.QtCore import QtWidget
ImportError: cannot import name 'QtWidget' from 'PySide6.QtCore' (/usr/lib/python3.12/site-packages/PySide6/QtCore.cpython-312-x86_64-linux-gnu.so)
Der Fehler tritt auf, weil QtCore nicht die Widget-Klassen enthält. QtCore enthält grundlegende, nicht-GUI-bezogene Klassen, während QtWidgets die GUI-Elemente enthält.
Überprüfen Sie, ob Sie versehentlich PyQt5 und PySide6 mischen. Diese Bibliotheken sind nicht kompatibel und sollten nicht in demselben Skript verwendet werden