QTable wird nicht angezeigt

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
kitebuggy
User
Beiträge: 39
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: 14308
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()
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Antworten