在尝试更改循环中的方法名称时,我实际上正在努力。我正在使用QT构建GUI,我面临着重复相同功能但名称不同的问题。
这是我的代码:
from Config import Ui_Dialog
class Ui_Dialog_Useful(Ui_Dialog):
def setupUi(self, widget):
super().setupUi(widget)
self.Sensitivity_filler()
def Sensitivity_filler(self):
self.Sensitivity_1.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_2.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_3.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_4.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_5.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_6.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_7.insertItems(0, ['10', '100', '1000'])
self.Sensitivity_8.insertItems(0, ['10', '100', '1000'])
正如您所看到的,函数之间的唯一变化是QComboBox对象的名称。我必须多次执行此操作。有没有办法在循环中做到这一点?
由于
答案 0 :(得分:2)
通常你不应该这样做(即动态名称,因为集合做得更好),但由于UI代码往往很棘手,你可以使用getattr
来获得正确的对象。
例如,您可能会这样做:
for i in range(1, 9):
getattr(self, 'Sensitivity_'+str(i)).insertItems(0, ['10', '100', '1000'])
如果有一种方法可以在不使用getattr
的情况下执行此操作,那么您一定要使用它。我无论如何都不熟悉QT。例如,如果可能的话,您应该将敏感度项目存储为可迭代的(即self.sensitivities
)并反复迭代。