我在PyQt5 GUI中有多个lineEdit,我想检测其变化。如果文本已更改,我将更改lineEdit的背景,以便用户可以查看已编辑的字段。 有没有一种方法可以对所有感兴趣的lineEdit进行“分组”,检测该“ group”中的更改,然后将textChanged事件连接到方法,同时传递已更改为参数的lineEdit?
显而易见的硬编码解决方案是将每个lineEdit连接到该方法,但这将是几行重复的代码。
我尝试将所有lineEdits收集到一个变量中,例如self.textfields = (lineEdit1, lineEdit2, ...)
,并检测该变量中的更改。不幸的是,这行不通。
编辑:
我已经设法使用lambda函数将对象作为参数传递。但是,我的问题是我需要连接每个lineEdit,例如:
self.lineEdit1.textChanged.connect(lambda: self.text_box_changed(self.lineEdit1))
self.lineEdit2.textChanged.connect(lambda: self.text_box_changed(self.lineEdit2))
self.lineEdit3.textChanged.connect(lambda: self.text_box_changed(self.lineEdit3))
etc.
问题是我要连接30多个lineEdit。现在的问题是,如果该实体的成员(也称为lineEdits之一)已经更改,我是否可以以某种方式将这些lineEdits分组为一个实体并将该实体连接到self.text_box_changed
方法,并传递更改后的lineEdit作为争论。我希望我已经清楚地提出了我的问题。