python - 在 QLineEdit 中单击 ClearButton 的自定义方法
问题描述
是否可以在单击 QLineEdit 中的 ClearButton 时运行自定义方法?
例如,我在 QCombobox 中有一个 ClearButton,我想在单击此 ComboBox 中的 ClearButton 时设置一个默认索引。
我已经尝试对 QLineEdit 的“clear()”插槽进行子类化,但没有成功。
解决方案
import sys
from PyQt5.QtWidgets import (QLineEdit, QApplication, QWidget, QVBoxLayout)
import qtawesome as qt
class Widget(QWidget):
def __init__(self, parent=None):
super(QWidget, self).__init__(parent)
self.flag = 0
self.layout = QVBoxLayout()
self.line_edit = QLineEdit()
self.line_edit.setClearButtonEnabled(False)
self.line_edit.textChanged.connect(self._on_line_edit_text_changed)
self.clear_icon = qt.icon('mdi.delete-circle-outline', color='gray', color_active='black')
self.clear_action = None
self.layout.addWidget(self.line_edit)
self.setLayout(self.layout)
def _on_line_edit_text_changed(self):
if self.line_edit and self.line_edit.text():
if not self.clear_action:
self.clear_action = self.line_edit.addAction(self.clear_icon, QLineEdit.TrailingPosition)
self.clear_action.triggered.connect(self._on_clear_clicked)
elif self.clear_action and self.line_edit and not self.line_edit.text():
self.line_edit.removeAction(self.clear_action)
self.clear_action = None
def _on_clear_clicked(self):
self.line_edit.clear()
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
推荐阅读
- elasticsearch - 从封闭列表中搜索,并仅形成该列表
- python-3.x - 尝试导入 torchvision 时出现导入错误
- reactjs - 注册表单作为组件传递给路由时出错
- symfony - 无法刷新令牌,因为用户已更改 Syfmony 4 - EquatableInterface 问题
- package - 包限定名称。Package::<&var> 与 &Package::var 之间的差异(如果有的话)?
- android - SMS Retriever API 总是导致超时,尽管消息格式正确
- javascript - 取两个数学随机值并将它们添加到循环中
- javascript - 在应用程序的移动版本中下载 pdf
- javascript - 回调不是 Node JS 中的更新函数
- php - 如何为 phpunit assert 设置多个可接受的值