pyqt5如何双击创建一个文本框,在按下enter时,读取文本框数据并删除文本框?

可以这样实现:

1.在需要双击创建文本框的区域设置双击事件,如:

self.my_widget.mouseDoubleClickEvent = self.create_text_box

2.在create_text_box函数中创建一个QLineEdit对象并加入到布局中:

def create_text_box(self, event):
    text_box = QLineEdit(self.my_widget)
    text_box.setGeometry(event.x(), event.y(), 50, 20)
    text_box.show()
    text_box.returnPressed.connect(self.read_text_box_data)

3.在read_text_box_data函数中读取文本框的内容并删除文本框:

def read_text_box_data(self):
    text_box = self.sender()
    data = text_box.text()
    # 读取文本框的数据,进行相应的操作
    text_box.deleteLater()

下面是一个简单的代码示例:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QGridLayout, QWidget

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

        self.line_edit = None

        self.initUI()

    def initUI(self):
        grid = QGridLayout()
        grid.setSpacing(10)

        central_widget = QWidget()
        central_widget.setLayout(grid)

        self.setCentralWidget(central_widget)

        self.line_edit = QLineEdit()
        self.line_edit.setText("double click to create a text box")
        self.line_edit.doubleClicked.connect(self.create_text_box)

        grid.addWidget(self.line_edit, 0, 0)

        self.setGeometry(300, 300, 300, 200)
        self.show()

    def create_text_box(self):
        text_box = QLineEdit()
        text_box.returnPressed.connect(self.read_and_remove)

        grid = self.centralWidget().layout()
        grid.addWidget(text_box, grid.count(), 0)

    def read_and_remove(self):
        sender = self.sender()
        text = sender.text()
        print(text)

        grid = self.centralWidget().layout()
        grid.removeWidget(sender)
        sender.deleteLater()

if __name__ == '__main__':
    app = QApplication(sys.argv

第二个例子

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
        
    def initUI(self):
        self.line_edit = QLineEdit(self)
        self.line_edit.setGeometry(10, 10, 200, 30)
        self.line_edit.setText("")
        self.line_edit.returnPressed.connect(self.on_enter)
        self.line_edit.dblClickEvent = self.on_dblClick
        self.show()

    def on_dblClick(self, event):
        self.line_edit.show()
        
    def on_enter(self):
        text = self.line_edit.text()
        print("You entered: ", text)
        self.line_edit.setText("")
        self.line_edit.hide()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

这段代码中,QLineEdit的dblClickEvent事件是自定义的双击事件,该事件在双击时会触发on_dblClick方法。当用户按下回车键时,returnPressed信号会被触发,调用on_enter方法。该方法会读取输入的文本并打印到控制台,并将输入的文本清空,隐藏输入框。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我想要身体健康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值