我如何将信息从一种方法传递到另一种方法python

问题描述:

因此,我对PyQt和python有所了解。我正在尝试编写一个简单的Qt应用程序,允许您单击一个按钮,然后在命令提示符下显示您在文本字段中输入的内容(我知道这是基本可笑的,但我试图去了解它),但是我似乎无法弄清楚如何从printTexInput()方法访问textBox属性。所以我的问题是你将如何从另一种方法访问该值?或者是我对这种完全错误的思考方式?任何帮助将不胜感激。我如何将信息从一种方法传递到另一种方法python

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() 
+1

现在'textBox'是'initUI'方法中的一个局部变量,当您离开该方法时它将永远丢失。如果你想在你的类的这个实例上存储'textBox',你需要改为'self.textBox = QtGui.QLineEdit()'。然后在'printTextInput'中,你可以调用'print self.textBox.text()'。 – charleyc

+0

@charleyc你应该发布这个答案。 –

+0

我试过了,输出:NameError:全局名称'textBox'没有定义 –

眼下textBoxinitUI方法的局部变量,当你离开这个方法,它是永远失去了。如果您想在此班级的这个实例中存储textBox,则需要改为self.textBox = QtGui.QLineEdit()。然后在printTextInput中,您可以改为拨打print self.textBox.text()

+0

我试过了,输出:NameError:没有定义全局名称'textBox'。 –

+0

行'grid.addWidget(textBox,0,1)'需要是'grid.addWidget(self.textBox,0,1)'。 – charleyc

+0

你我的朋友真棒!谢谢。你已经解决了它! :) 非常感谢。 –