【发布时间】:2022-01-21 00:08:11
【问题描述】:
我有 7 个 lineEdit 块,我希望 textChanged 函数在它们中的任何一个发生变化时触发,我决定采用简单的方法并按顺序将它们写出来,但现在我想缩短我的代码。
我想把这个做空
self.lineEdit_2.textChanged.connect(self.textChanged)
self.lineEdit_3.textChanged.connect(self.textChanged)
self.lineEdit_4.textChanged.connect(self.textChanged)
self.lineEdit_5.textChanged.connect(self.textChanged)
self.lineEdit_6.textChanged.connect(self.textChanged)
self.lineEdit_7.textChanged.connect(self.textChanged)
self.lineEdit_8.textChanged.connect(self.textChanged)
喜欢这个
for n in range(2, 8): #check changes on the all lineEdit units
self.lineEdit_n.textChanged.connect(self.textChanged)
或者像这样
for n in range(2, 8):
self.lineEdit_n.textChanged.connect(self.textChanged)
getattr(self, 'lineEdit_n%' % n).textChanged.connect(self.textChanged)
但它不起作用 感谢您的关注
【问题讨论】:
-
Jérôme 对 f 弦的回答很好。你快到了。我不知道你为什么尝试
'lineEdit_n' % n,因为它没有任何意义。 f-strings 是更好的选择,但如果你想保持你的方法,那就是'lineEdit_%d' % n。 -
最好将数据保留在列表
self.lineEdit = []上,而不是分隔变量。