2013-02-03 435 views
0

因此,我對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'沒有定義 –

回答

1

眼下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

你我的朋友真棒!謝謝。你已經解決了它! :) 非常感謝。 –

相關問題