AlexW.H.B.
AlexW.H.B.

Reputation: 1871

how can I pass info from one method to another in python

So I'm a noob to PyQt and to python for that matter. I'm trying to write a simple Qt app that allows you to click a button then display what you entered in the text field in the command prompt, (i know this is ridiculously basic, but I'm trying to learn it) but I can't seem to figure out how to access the textBox attribute from printTexInput() method. so my question is how would you access that value from another method? or is my way of thinking about this completely wrong? any help would be greatly appreciated.

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):
        textBoxLabel = QtGui.QLabel('Text Input')
        self.textBox = QtGui.QLineEdit()

        okayButton = QtGui.QPushButton("Okay")

        okayButton.clicked.connect(self.printTexInput)

        grid = QtGui.QGridLayout()
        grid.setSpacing(10)

        grid.addWidget(textBoxLabel, 0, 0)
        grid.addWidget(textBox, 0, 1)
        grid.addWidget(okayButton, 3, 3)

        self.setLayout(grid)

        self.setGeometry(300,300,250,250)
        self.setWindowTitle("test")
        self.show()

    def printTexInput(self):
        print self.textBox.text()
        self.close()




def main():

    app = QtGui.QApplication(sys.argv)
    ex  = Example()
    sys.exit(app.exec_())

if __name__=='__main__':
    main()

Upvotes: 0

Views: 133

Answers (1)

charleyc
charleyc

Reputation: 1709

Right now textBox is a local variable in the initUI method, and it's lost forever when you leave that method. If you want to store textBox on this instance of your class, you need to say self.textBox = QtGui.QLineEdit() instead. Then in printTextInput you can call print self.textBox.text() instead.

Upvotes: 1

Related Questions