1
我的目标是发送消息到服务器,而我按输入。 下面我发布的解决方案,每次按键时按下,并不重要它是哪个键。我怎样才能得到acctualy被按下的钥匙?在QLineEdit中处理的按键哪个实例在QMainWindow中
from sys import argv, exit
from interface import Ui_MainWindow
from PyQt5.QtGui import QKeyEvent
from PyQt5.QtCore import Qt, pyqtSlot
from PyQt5.QtWidgets import QApplication, QMainWindow
from client import connect_to_server, send_message
class Communicator(QMainWindow):
def __init__(self):
super(QMainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
@pyqtSlot()
def on_message_box_textChanged(self):
server_socket = connect_to_server()
message = self.ui.message_box.toPlainText()
send_message(message, server_socket)
def main():
main_application = QApplication(argv)
window = Communicator()
window.show()
exit(main_application.exec_())
if __name__ == '__main__':
main()
正如我看到我在标题中犯了错误,实际上message_box的类型是QPlainTextEdit,它没有returnPressed或editingFinished信号。你明确的解决方案是正确的,以及自动连接,所以我将你的答案标记为问题的正确答案。如果你能为QPlainTextEdit提供解决方案,那将会很好。 – Janusz
@Janusz。 'QPlainTextEdit'是一个**多行**编辑器,因此使用回车键发送消息使事情变得更加复杂。你确定你想这样做吗?为什么不只有一个发送消息的按钮?你也可以添加一个键盘快捷键到这个按钮,这可以在Qt Designer中很容易地完成。或者如果你真的不想要按钮,你可以添加键盘快捷键,这不需要太多的代码。 – ekhumoro