Seite 1 von 1

Code zeigt nichts an

Verfasst: Montag 21. März 2016, 10:08
von Brando
Hallo, laut Buch sollte folgender Code funktionieren:

Code: Alles auswählen

# -*- coding: utf-8 -*-
"""
Created on Mon Mar 21 09:25:36 2016

@author: rk480158
"""
import sys
from PyQt4 import QtCore, QtGui

def main(argv):
    print("Hallo")
    app = QtGui.QApplication(argv)
#    mainwindow = QtGui.QMainWindow()
    mainwindow=MainWindow()
    mainwindow.show()
    sys.exit(app.exec_())
    main(sys.argv)
    
class MainWindow(QtGui.QMainWindow):
    
    def _init_(self, *args):
        QtGui.QMainWindow._init_(self, *args)
        self.createMenu()
        self.createComponents()
        self.createLayout()
        self.createConnects()
        
        self.setWindowTitle(self.tr(u"Hello World!"))
        
    def createMenu(self):
        pass
    
    def createComponents(self):
        self.labelHalloWelt = QtGui.QLabel(self.tr(u"Hello World"))
        self.buttonTextAktualisieren = QtGui.QPushButton(self.tr(u"Update!"))
        self.editText = QtGui.QLineEdit()
        
    def createConnects(self):
        pass
    
    def createLayout(self):
        layoutZentral = QtGui.QVBoxLayout()
        layoutZentral.addWidget(self.labelHelloWelt)
        layoutZentral.addWidget(self.editText)
        layoutZentral.addWidget(self.buttonTextAktualisieren)
        
        widgetZentral = QtGui.QWidget()
        widgetZentral.setLayout(layoutZentral)
        self.setCentralWidget(widgetZentral)
Er zeigt aber nichts an. Kann mir jemand weiterhelfen?

Re: Code zeigt nichts an

Verfasst: Montag 21. März 2016, 10:27
von pillmuncher
Es muss

Code: Alles auswählen

__init__
heißen, nicht

Code: Alles auswählen

_init_

Re: Code zeigt nichts an

Verfasst: Montag 21. März 2016, 10:38
von Brando
Habe ich geändert, es kommt aber immer noch nichts als Ausgabe. Selbst print("Hallo") wird nicht ausgeführt.

Re: Code zeigt nichts an

Verfasst: Montag 21. März 2016, 11:03
von Sirius3
@Brando: Du rufst auch main nirgends auf (Das rekursive Aufrufen von main innerhalb von main ist wohl nicht beabsichtigt).

Re: Code zeigt nichts an

Verfasst: Montag 21. März 2016, 12:58
von Brando
OK ich habe eine Zeile main() ergänzt und das Programm läuft immer noch nicht.

Re: Code zeigt nichts an

Verfasst: Montag 21. März 2016, 13:09
von Sirius3
@Brando: jetzt wäre es an der Zeit, dass Du zeigst, was Du eigentlich gemacht hast.

Re: Code zeigt nichts an

Verfasst: Montag 21. März 2016, 13:28
von Brando
Folgenden Code habe ich neu erstellt:

Code: Alles auswählen

# -*- coding: utf-8 -*-
"""
Created on Mon Mar 21 09:25:36 2016

@author: rk480158
"""
import sys
from PyQt4 import QtCore, QtGui

# def main(argv):

#    main(sys.argv)
    
class MainWindow(QtGui.QMainWindow):
    
    def __init__(self, *args):
#        super(Window,self).__init__()        
        QtGui.QMainWindow.__init__(self, *args)
        self.createMenu()
        self.createComponents()
        self.createLayout()
        self.createConnects()
        
        self.setWindowTitle(self.tr(u"Hello World!"))
        
    def createMenu(self):
        pass
    
    def createComponents(self):
        self.labelHalloWelt = QtGui.QLabel(self.tr(u"Hello World"))
        self.buttonTextAktualisieren = QtGui.QPushButton(self.tr(u"Update!"))
        self.editText = QtGui.QLineEdit()
        
    def createConnects(self):
        pass
    
    def createLayout(self):
        layoutZentral = QtGui.QVBoxLayout()
        layoutZentral.addWidget(self.labelHelloWelt)
        layoutZentral.addWidget(self.editText)
        layoutZentral.addWidget(self.buttonTextAktualisieren)
        
        widgetZentral = QtGui.QWidget()
        widgetZentral.setLayout(layoutZentral)
        self.setCentralWidget(widgetZentral)

print("Hallo")
app = QtGui.QApplication(sys.argv)
#    mainwindow = QtGui.QMainWindow()
mainwindow = MainWindow()
mainwindow.show()
sys.exit(app.exec_())

Re: Code zeigt nichts an

Verfasst: Montag 21. März 2016, 13:55
von Sirius3
@Brando: ... und was heißt jetzt, "läuft nicht"? Gibt es vielleicht eine Fehlermeldung, und wenn ja welche?

Re: Code zeigt nichts an

Verfasst: Montag 21. März 2016, 14:11
von Brando
Das ist ja gerade das beunruhigende; es gibt keine Fehlermeldung. Aber es tut sich auch nichts. Keine GUI Elemente, die dargestellt werden.

Re: Code zeigt nichts an

Verfasst: Montag 21. März 2016, 15:09
von Sirius3
Wie startest Du das Programm? Bei mir gibt es eine Fehlermeldung.

Re: Code zeigt nichts an

Verfasst: Montag 21. März 2016, 15:57
von Brando
Ich habe im Code den Label self.labelHalloWelt = QtGui.QLabel(self.tr(u"Hello World")) konsistent gesetzt, mit: layoutZentral.addWidget(self.labelHalloWelt)

Im übrigen programmiere ich mit Spyder; ein einfaches F5 und die Datei wird ausgeführt. Allerdings gibt es kein Ergebnis, ich muss aber den kernel reloaden.

Re: Code zeigt nichts an

Verfasst: Montag 21. März 2016, 21:43
von bb1898
Brando hat geschrieben:Ich habe im Code den Label self.labelHalloWelt = QtGui.QLabel(self.tr(u"Hello World")) konsistent gesetzt, mit: layoutZentral.addWidget(self.labelHalloWelt)
Das ist merkwürdig. Mit genau dieser kleinen Korrektur ist das Programm bei mir nämlich gelaufen (Python 3.4, PyQt 4.11, Windows 10).
Im übrigen programmiere ich mit Spyder; ein einfaches F5 und die Datei wird ausgeführt. Allerdings gibt es kein Ergebnis, ich muss aber den kernel reloaden.
Ich kenne mich mit Spyder nicht aus; aber nicht jede IDE verträgt sich mit jeder GUI-Bibliothek. Hast Du das Programm mal direkt aus einem Terminal (auf Windows: Eingabeaufforderung) gestartet? Das ist die sicherste Methode, Fehlermeldungen gezeigt zu kriegen. Mit IDLE sollte es auch gehen (tut es jedenfalls bei mir) - IDLE und tkinter geht nicht gut, IDLE und PyQt verträgt sich schon.