[Python-de] PyQt4: WindowTitle ändern / Label-Text init. ... aber wie?

Daniel Hagemeister-Biernath PepeCyB at hagemeisterbln.de
Mo Nov 5 20:29:11 UTC 2007


Hallo, 

wenn ich 

1.) in einem Dialog zum Programmstart den Text eines Labels ändern will, 
klappt das nicht so, wie gedacht. Es geht nur, wenn ich das innerhalb der 
setupUi mache. 

2.) ich den WindowTitle z. B. als Reaktion auf einen Klick auf einen Button 
ändern möchte, wird der Titel nicht geändert. 

Bei PyQt3 klappte das alles immer... ich schätze, es hat sich was am Konzept 
mit der Version 4 geändert. Nun suche ich schon wochenlang in der Doku und 
google fleissig rum, werde aber nicht fündig. Kann jemand helfen? 

Gruß Daniel

Dateien des NICHT funktionierenden Programms: 

------------------------------------------------------------------------------------------------------------------------
main.py:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import sys 
from PyQt4 import QtCore, QtGui 

from mainform_impl import Mainform_Impl 


# create Qt application 
app = QtGui.QApplication(sys.argv) 
QtCore.QObject.connect(app,QtCore.SIGNAL("lastWindowClosed()"),app,QtCore.SLOT("quit()")) 

# create and show Qt form 
MainWindow = QtGui.QMainWindow() 
ui = Mainform_Impl() 
ui.setupUi(MainWindow) 
MainWindow.show() 

# enter Qt event-handling loop 
sys.exit(app.exec_())

------------------------------------------------------------------------------------------------------------------------
Ui_test01.py:

# -*- coding: utf-8 -*- 

# Form implementation generated from reading ui file 
'/home/daniel/Develop/PyDevel/projects/PyQt4Test/test01.ui' 
# 
# Created: Sun Nov  4 18:21:05 2007 
#      by: PyQt4 UI code generator 4.3.1 
# 
# WARNING! All changes made in this file will be lost! 

from PyQt4 import QtCore, QtGui 

class Ui_Dialog(object): 

    def setupUi(self, Dialog): 
        Dialog.setObjectName("Dialog") 
        
Dialog.resize(QtCore.QSize(QtCore.QRect(0,0,400,300).size()).expandedTo(Dialog.minimumSizeHint())) 

        self.pushButton = QtGui.QPushButton(Dialog) 
        self.pushButton.setGeometry(QtCore.QRect(200,250,76,28)) 
        self.pushButton.setObjectName("pushButton") 

        self.label = QtGui.QLabel(Dialog) 
        self.label.setGeometry(QtCore.QRect(40,30,271,61)) 
        self.label.setObjectName("label") 

        self.retranslateUi(Dialog) 
        
QtCore.QObject.connect(self.pushButton,QtCore.SIGNAL("clicked()"),self.on_pushButton_clicked) 
        QtCore.QMetaObject.connectSlotsByName(Dialog) 

    def on_pushButton_clicked(self): 
        """ 
        Slot documentation goes here. 
        """ 
        # TODO: not implemented yet 
        raise "Not implemented yet"        

    def retranslateUi(self, Dialog): 
        Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", 
None, QtGui.QApplication.UnicodeUTF8)) 
        self.pushButton.setText(QtGui.QApplication.translate("Dialog", "DO 
IT !", None, QtGui.QApplication.UnicodeUTF8)) 
        self.label.setText(QtGui.QApplication.translate("Dialog", "TextLabel", 
None, QtGui.QApplication.UnicodeUTF8)) 



if __name__ == "__main__": 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    Dialog = QtGui.QDialog() 
    ui = Ui_Dialog() 
    ui.setupUi(Dialog) 
    Dialog.show() 
    sys.exit(app.exec_())

------------------------------------------------------------------------------------------------------------------------
mainform_impl.py:

# -*- coding: utf-8 -*- 

""" 
Module implementing Mainform_Impl. 
""" 

from PyQt4.QtGui import QDialog 
from PyQt4.QtCore import pyqtSignature 

from Ui_test01 import Ui_Dialog 

class Mainform_Impl(QDialog, Ui_Dialog): 
    """ 
    Class documentation goes here. 
    """ 
    def __init__(self, parent = None): 
        """ 
        Constructor 
        """ 
        QDialog.__init__(self, parent) 
        self.setupUi(self) 
        self.label.setText("HALLO WELT")           # <- DAS FÜHRT ZU KEINEM 
EFFEKT! WARUM BLOSS??? 
    
    @pyqtSignature("") 
    def on_pushButton_clicked(self): 
        """ 
        Slot documentation goes here. 
        """ 
        # TODO: not implemented yet 
        self.label.setText("HALLO") 
        self.setWindowTitle("JAWOLL")     # <- UND DAS FÜHRT AUCH NICHT ZU 
EINER ÄNDERUNG DES TITELS... WIE ERREICHE ICH DAS???