QTable wird nicht angezeigt

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
kitebuggy
User
Beiträge: 35
Registriert: Donnerstag 5. August 2021, 21:11

Hallo

Ich frage micht, warum ich ein leeres Fenster angezeigt bekomme und keine QTable.
Hier mein Code:

Code: Alles auswählen

#!/usr/bin/python


import sys
from PyQt5.QtWidgets import(QApplication,QWidget,QTableWidget,QLabel,QTableWidgetItem)

class test(QWidget):
    
    def __init__(self):
        super(test,self).__init__()
        self.initUI()
        
    def initUI(self):
        self.setMinimumSize(1000,700)
        self.setWindowTitle('TableTest')
        self.createTable()
        self.show()
      
    def createTable(self):
        self.table=QTableWidget(10,7)
             
if __name__=='__main__':
    app=QApplication(sys.argv)
    window=test()
    sys.exit(app.exec_())
Wo ist da der Wurm drin?

Danke
Benutzeravatar
__blackjack__
User
Beiträge: 13342
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@kitebuggy: Weil nirgends steht, dass das `QTableWidget` in `QWidget` angezeigt werden soll und wo dort.

Sonstige Anmerkungen: Die Klasse ist klein geschrieben.

Die zusätzlichen Methoden sind überflüssig, das gehört alles in die `__init__()`.

Das `show()` gehört da nicht rein, das ist etwas was von aussen aufgerufen wird.

Die Methode heisst `exec()`. Die mit Unterstrich wird verschwinden, wenn sie das bei PyQt6 nicht bereits ist.

Edit: Da fehlt eine `main()`-Funktion damit `app` und `window` nicht globale Variablen sind.

`super()` braucht keine Argumente.

Code: Alles auswählen

#!/usr/bin/python
import sys

from PyQt5.QtWidgets import QApplication, QTableWidget, QVBoxLayout, QWidget


class Window(QWidget):
    def __init__(self):
        super().__init__(windowTitle="TableTest")
        self.setMinimumSize(1000, 700)
        layout = QVBoxLayout(self)
        self.table = QTableWidget(10, 7)
        layout.addWidget(self.table)


def main():
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec())


if __name__ == "__main__":
    main()
“It is easier to optimize correct code than to correct optimized code.” — Bill Harlan
Antworten