pyqt5 设置QEditLine不可编辑并触发单击事件
时间: 2023-07-21 22:16:24 浏览: 101
PyQt5基本窗口控件—–QLineEdit
5星 · 资源好评率100%
可以通过设置 `QLineEdit` 的 `ReadOnly` 属性为 `True` 来禁止编辑,然后通过监听 `mousePressEvent` 事件来实现单击事件的触发。以下是一个示例代码:
```python
from PyQt5.QtWidgets import QApplication, QLineEdit, QWidget
from PyQt5.QtCore import Qt
class MyLineEdit(QLineEdit):
def __init__(self, parent=None):
super(MyLineEdit, self).__init__(parent=parent)
self.setReadOnly(True)
def mousePressEvent(self, event):
super(MyLineEdit, self).mousePressEvent(event)
if event.button() == Qt.LeftButton:
print("clicked")
if __name__ == '__main__':
app = QApplication([])
widget = QWidget()
line_edit = MyLineEdit(widget)
widget.show()
app.exec_()
```
在这个示例中,我们自定义了一个名为 `MyLineEdit` 的 `QLineEdit` 子类,并重写了它的 `mousePressEvent` 方法。在该方法中,我们首先调用了父类的 `mousePressEvent` 方法以确保默认的行为不受影响,然后判断是否是左键单击事件,如果是,则触发了一个简单的打印语句。同时,我们在 `__init__` 方法中设置了 `ReadOnly` 属性为 `True`,以禁止用户编辑该文本框。
阅读全文