2017-12-18 180 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