NameError: name ‚QtWidgets‘ is not defined. Did you mean: ‚QWidget‘?

Ü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

  1. sys: Ein eingebautes Python-Modul, das Zugriff auf einige Variablen und Funktionen bietet, die vom Python-Interpreter verwendet oder verwaltet werden.
  2. Von PySide6.QtCore:
    • Qt: Diese Klasse bietet grundlegende nicht-GUI-Funktionalitäten.
  3. Von PySide6.QtWidgets:
    • QApplication: Die Basis-Klasse für alle Qt-Anwendungen.
    • QLabel: Ein Widget zum Anzeigen von Text oder Bildern.
    • QVBoxLayout und QHBoxLayout: Layout-Klassen für die vertikale bzw. horizontale Anordnung von Widgets.
    • QPushButton: Ein Befehlsschaltfläche.
    • QListWidget und QListWidgetItem: 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:


  1. Fügen Sie am Anfang Ihres Skripts die folgenden Importe hinzu:
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

Schreibe einen Kommentar