2016-12-21 10 views
0

У меня есть код выше ... Мне нужно, чтобы добавить returnPressed() события в send_box QLineEdit(), но я получаю ошибку ниже:ошибка события PyQt returnPressed в PyQt5

self.send_box.returnPressed.connect(self.sendData) AttributeError: 'myApp' object has no attribute 'send_box'

import sys 

from PyQt5 import QtCore, QtGui, QtWidgets 
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLineEdit, QFileDialog, QInputDialog, QFileDialog 
from PyQt5.QtGui import QIcon 
from PyQt5.Qt import QPushButton, QTextEdit 


class myApp (QMainWindow): 
    def __init__(self): 
     super().__init__() 

     self.initUI() 

    def initUI(self): 

     self.setGeometry(200,100,400,580) 
     self.setWindowTitle('My Application') 
     self.setWindowIcon(QIcon('icon.png')) 

     main_text  =  QTextEdit(self) 
     send_box  =  QLineEdit(self) 

     # ReturnedPressed Event code here 
     self.send_box.returnPressed.connect(self.sendData) 

     connect_btn  =  QPushButton('Connect', self) 
     browse_btn  =  QPushButton('Browse', self) 


     ip_add_box  =  QLineEdit(self) 
     port_box  =  QLineEdit(self) 

     main_text.setGeometry(25, 30, 360, 350) 
     send_box.setGeometry(25, 400, 360, 60) 
     ip_add_box.setGeometry(25, 530, 150, 30) 
     port_box.setGeometry(180, 530, 90,30) 
     connect_btn.setGeometry(25, 500, 70, 25) 
     browse_btn.setGeometry(100,500,70,25) 



     self.show() 

    def sendData(self): 
     self.main_text.append(self.send_box.text()) 
     self.send_box.clear() 


if __name__ == '__main__': 

    app = QApplication(sys.argv) 
    ex = myApp() 
    sys.exit(app.exec_()) 

ответ

0

изменения send_box к self.send_box и main_text к self.main_text

import sys 

from PyQt5 import QtCore, QtGui, QtWidgets 
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLineEdit, QFileDialog, QInputDialog, QFileDialog 
from PyQt5.QtGui import QIcon 
from PyQt5.Qt import QPushButton, QTextEdit 


class myApp (QMainWindow): 
    def __init__(self, parent=None): 
     super().__init__(parent=parent) 

     self.initUI() 

    def initUI(self): 

     self.setGeometry(200,100,400,580) 
     self.setWindowTitle('My Application') 
     self.setWindowIcon(QIcon('icon.png')) 

     self.main_text  =  QTextEdit(self) 
     self.send_box  =  QLineEdit(self) 
     # ReturnedPressed Event code here 
     self.send_box.returnPressed.connect(self.sendData) 

     connect_btn  =  QPushButton('Connect', self) 
     browse_btn  =  QPushButton('Browse', self) 


     ip_add_box  =  QLineEdit(self) 
     port_box  =  QLineEdit(self) 

     self.main_text.setGeometry(25, 30, 360, 350) 
     self.send_box.setGeometry(25, 400, 360, 60) 
     ip_add_box.setGeometry(25, 530, 150, 30) 
     port_box.setGeometry(180, 530, 90,30) 
     connect_btn.setGeometry(25, 500, 70, 25) 
     browse_btn.setGeometry(100,500,70,25) 

    def sendData(self): 
     self.main_text.append(self.send_box.text()) 
     self.send_box.clear() 


if __name__ == '__main__': 

    app = QApplication(sys.argv) 
    ex = myApp() 
    ex.show() 
    sys.exit(app.exec_()) 
+0

Спасибо человеку. Я исправил это раньше, и это сработало. Хотя мне по-прежнему нужна помощь в программировании сокетов pyqt5 ... Я могу создать сокет между двумя ПК с помощью консоли python, но не знаю, как PyQt5 – Sabawoon

+0

@Sabawoon. Если вы уже решили проблему, опубликуйте сообщение с помощью решения – eyllanesc

+0

Я довольно новичок в stackoverflow, и я просто прокомментировал выше вас ... я не знал, что могу ответить или опубликовать свой ответ сам. – Sabawoon

-1

линия кода вы должны вызвать ваш метод выглядит некорректное изменение

линия

self.send_box.returnPressed.connect(self.sendData) 

в

self.send_box.clicked.connect(self.sendData) 

также, если вы хотите отправить Parms с вызовом вы можете сделать это также с помощью лямбда

self.send_box.clicked.connect(lambda: self.sendData(parm1,parm2)) 
+0

I не хочу событие .clicked(), потому что это текстовое поле, мне просто нужно нажать enter, чтобы отправить текст из QLineEdit в QTextEdit – Sabawoon

+0

Проблема устранена следующим. Спасибо хоть self.main_text = QtWidgets.QTextEdit (само) self.send_box = QtWidgets.QLineEdit (само) self.send_box.returnPressed.connect (self.sendData) connect_btn = QtWidgets.QPushButton ('Connect') browse_btn = QtWidgets.QPushButton ('Browse') ip_add_box = QtWidgets.QLineEdit (self) port_box = QtWidgets.QLineEdit (self) – Sabawoon