2017-12-18 99 views
0

我從行編輯中抓取用戶輸入並將其顯示在QMessageBox上,但由於某種原因它不會顯示。我想也許我沒有從QLineEdit獲取輸入,但是當我嘗試在終端上打印它(它仍然不會顯示任何btw)終端向下滾動時,認識到有新的數據,但沒有顯示它。知道我在說什麼?PyQt:來自QLineEdit的文本不顯示

import os 
import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 


def main(): 
    app = QApplication(sys.argv) 
    w = MyWindow() 
    w.show() 
    sys.exit(app.exec_()) 


class MyWindow(QWidget): 
    def __init__(self, *args): 
     QWidget.__init__(self, *args) 

     # create objects 
     label = QLabel(self.tr("enter the data ")) 
     self.le = QLineEdit() 
     self.te = QTextEdit() 

     # layout 
     layout = QVBoxLayout(self) 
     layout.addWidget(label) 
     layout.addWidget(self.le) 
     layout.addWidget(self.te) 
     self.setLayout(layout) 

     # create connection 
     self.mytext = str(self.le.text()) 
     self.connect(self.le, SIGNAL("returnPressed(void)"), 
        self.display) 

    def display(self): 
     QApplication.instance().processEvents() 
     msg = QMessageBox.about(self, 'msg', '%s' % self.mytext) 
     print(self.mytext) 
     self.te.append(self.mytext) 
     self.le.setText("") 

if __name__ == "__main__": 
    main() 
+1

您必須閱讀插槽中的文本:'def display(self): self.mytext = self.le.text() msg = QMessageBox.about(self,'msg','%s' (self.mytext) self.te.append(s elf.mytext) self.le.setText(「」)' – eyllanesc

+0

謝謝,它的工作,嗯,我可以看到你已經有近25k的聲譽表示祝賀,順便說一句。你應該寫這個答案,我可以投票給你,只是說。 @eyllanesc –

+0

我已經發表了它。 – eyllanesc

回答

2

您正在閱讀在構造函數中QLineEdit的,在那一刻的QLineEdit的是空的,你必須這樣做在插槽:

def display(self): 
    mytext = self.le.text() 
    msg = QMessageBox.about(self, 'msg', '%s' % mytext) 
    self.te.append(mytext) 
    self.le.clear() 

注意:使用clear()來清潔QLineEdit