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

슬롯에있는 텍스트를 읽어야합니다 : self.mytext = self.le.text() msg = QMessageBox.about (self, 'msg', '% s' % self.mytext) 인쇄 (self.mytext) self.te.append (s elf.mytext) self.le.setText ("")' – eyllanesc

+0

고마워요, 그게 효과가 있습니다. 음, 이미 저의 btw에 대해 거의 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() 

참고 : 청소) (일반 사용 QLineEdit

관련 문제