我想在按下回车键后显示文本
from PyQt5.QtWidgets import QWidget, QApplication, QPlainTextEdit, QVBoxLayout, QLabel
from PyQt5.QtCore import Qt
import sys
class PlainTextEdit(QPlainTextEdit):
def __init__(self, parent):
super().__init__(parent=parent)
close_window = ClosingWindow()
vbox = QVBoxLayout()
self.close_window.setLayout(vbox)
def keyPressEvent(self, QKeyEvent):
if QKeyEvent.key() == Qt.Key_Enter:
self.close_window.label_display.setText("Enter key pressed")
class ClosingWindow(QWidget):
def __init__(self):
super().__init__()
plainText = PlainTextEdit(self)
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
label_display = QLabel("Text Here")
self.setLayout(vbox)
self.setWindowTitle("Message Box")
self.setGeometry(200, 200, 500, 300)
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
close_win = ClosingWindow()
sys.exit(app.exec_())
您的代码有以下错误:
你正在创建一个无限循环:你正在ClosingWindow中创建一个PlainTextEdit,在该PlainTextEdit中你正在创建另一个ClosingWindow,在该另一个ClosingWindow中你正在创建一个PlainTextEdit,等等。每次使用类的构造函数时,你都在创建一个不同的对象,因此,在明文编辑中创建的“close\u window”与“close\u win”不同
每个类必须有一个单独的职责,在您的情况下,plaintextededit的职责是通知它被按下了enter,在这种情况下,您必须使用一个信号
键盘上的回车键不对应于Qt::key\u enter,而是Qt::key\u Return,它只对应于键盘上的Qt::key\u Return
无需在明文编辑中创建布局
综上所述,解决方案是:
(1)Single responsibility principle
相关问题 更多 >
编程相关推荐