Текст из QLineEdit не отображается

Я беру пользовательский ввод из редактирования строки и отображаю его в QMessageBox, но по какой-то причине он не отображается. Я подумал, может быть, я вообще не брал ввод из 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() 

person Community    schedule 18.12.2017    source источник
comment
Вы должны прочитать текст в слоте: def display(self): self.mytext = self.le.text() msg = QMessageBox.about(self, 'msg', '%s' % self.mytext) print(self.mytext) self.te.append(self.mytext) self.le.setText("")   -  person eyllanesc    schedule 18.12.2017
comment
спасибо, это сработало, гм, я вижу, у вас уже почти 25 тысяч репутации, поздравляю с этим, кстати. вы должны написать это как ответ, я могу проголосовать за вас, просто сказав. @eyllanesc   -  person    schedule 18.12.2017
comment
Я уже опубликовал его.   -  person eyllanesc    schedule 18.12.2017


Ответы (1)


Вы сейчас читаете 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.

person eyllanesc    schedule 18.12.2017