这是我关于StackOverflow的第一个问题。我一直只是在谷歌搜索中找到想要的东西,但是这次我被困住了,无法解决。
我是一名使用python的初学者,仍然学习很多。
我想用一个小的代码来更改用户界面中的dateEdit框以设置det当前日期时间。 代码看起来像这样。
self.dateEdit_2.setDateTime(QtCore.QDateTime.currentDateTime())
现在,我想将每个dateEdit框都更改为相同的值,从2开始到29,而不必键入每一行。
我试图用填充列表制作一个for循环。 我得到它打印出我想要的东西,但是我如何获得“ set_date_numb”作为满足我想要的属性。
希望您能理解,谢谢。
dateTimeList = ['2','3','4','5','6','7','8','9',
'10','11','12','13','14','15','16','17','18','19','20',
'21','22','23','24','25','26','27','28','29']
indexval = 0
for i in range(len(dateTimeList)):
date_numb = (dateTimeList[indexval])
set_date_numb ='self.dateEdit_{}.setDateTime(QtCore.QDateTime.currentDateTime())'.format(date_numb)
print(set_date_numb)
indexval += 1
答案 0 :(得分:2)
您可以使用getattr()
,请参阅文档here。由于您所追求的功能是您实例的成员,因此您可以使用名称作为字符串来获取它们(我认为这是您面临的主要问题):
dateTimeList = [str(x) for x in range(2,30)]
for dt in dateTimeList:
name = "dateEdit_{}".format(dt)
currentDateEdit = getattr(self, name)
currentDateEdit.setDateTime(QtCore.QDateTime.currentDateTime())