2010-10-07 7 views
1

S'il vous plaît quelqu'un peut me dire ce que je fais mal ici en ce qui concerne l'appel pwTxt.text.Interaction de base Widget avec PyQt

#!/usr/bin/python 
import sys 
from PyQt4 import QtCore, QtGui 

from mainwindow import Ui_MainWindow 


class MyForm(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 

    def on_pwExtract_pressed(self): 
     print self.pwTxt.text 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    myapp = MyForm() 
    myapp.show() 
    sys.exit(app.exec_()) 

La ligne print self.pwTxt.text échoue parce qu'il ne peut pas trouver le widget, pwTxt est un QLineEdit défini dans la fenêtre principale. Je viens de le faire dans QTDesigner et j'ai généré du code python avec pyuic4. Comment faire référence correctement d'autres widgets sur la même fenêtre, dans ce cas, je veux juste obtenir le texte d'un QLineEdit nommé pwTxt lorsque le pwExtract QPushButton est pressé.

Merci beaucoup.

Répondre

1

Essayez:

print self.ui.pwTxt.text() 
+0

Merci que je devais rendre .text() pour que cela fonctionne sinon il émis « ». Vous ne savez pas pourquoi .text devrait fonctionner comme un attribut? Tout bien, bien que merci :) – Jason

+0

@Jason - édité pour prendre votre commentaire en compte. 'text' devrait être un attribut de l'objet python s'il s'agit d'une 'propriété' dans Qt. – sje397

Questions connexes