Pyqt5双击标签改变文本

Pyqt5双击标签改变文本

class EditableLabel(QWidget):
    def __init__(self, text="", parent=None,size=(None,None)):
        super().__init__(parent)

        # 初始化标签和输入框
        self.label = QLabel(text, self)
        self.input = QLineEdit(self)

        # 设置字体大小
        self.label.setStyleSheet("font-size: 18px;")
        self.input.setStyleSheet("background:transparent;border: none;font-size: 18px;")

        # 设置输入框初始不显示
        self.input.setVisible(False)

        # 设置控件大小
        self.setFixedSize(size[0], size[1])  # 设置 EditableLabel 的大小

        # 将标签和输入框放在固定位置
        self.label.setGeometry(0, 0, size[0], size[1])  # 标签的位置和大小
        self.input.setGeometry(0, 0, size[0], size[1])  # 输入框的位置和大小'''

        # 双击标签时显示输入框,隐藏标签
        self.label.mouseDoubleClickEvent = self.on_label_double_click

        # 失去焦点时隐藏输入框,显示标签
        self.input.editingFinished.connect(self.on_editing_finished)

        # 失去焦点时隐藏输入框,显示标签
        self.input.focusOutEvent = self.on_focus_out

    def on_label_double_click(self, event):
        # 隐藏标签,显示输入框
        self.label.setVisible(False)
        self.input.setVisible(True)
        self.input.setText(self.label.text())  # 设置输入框的内容为标签文本
        self.input.setFocus()

    def on_editing_finished(self):
        # 更新标签文本为输入框的内容
        self.label.setText(self.input.text())
        self.label.setVisible(True)
        self.input.setVisible(False)

    def on_focus_out(self, event):
        # 失去焦点时隐藏输入框,显示标签
        # 更新标签文本为输入框的内容
        self.label.setText(self.input.text())
        self.label.setVisible(True)
        self.input.setVisible(False)

使用标签和输入栏来实现操作 注意在放置时的用法:
 

self.label = EditableLabel(f"Text",self,(80,30))
self.label.setGeometry(10, 30, 80, 30)

这里的setGeometry只起到设置位置的作用 前两个参数来设置位置 后两个参数在这里是无效的 如果要设置大小调整EditableLabel的第三个参数
EditableLabel("文本",self,(x大小,y大小))

效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值