【问题标题】:Python loop list in function call函数调用中的 Python 循环列表
【发布时间】:2019-02-27 21:44:56
【问题描述】:

这是我在 StackOverflow 上的第一个问题。我总是通过谷歌搜索找到我想要的东西,但这一次我被卡住了,无法弄清楚。

我是一名 Python 初学者,并且仍在学习很多东西。

我想用一个小代码更改用户界面中的 dateEdit 框来设置当前日期时间。 代码如下所示。

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

【问题讨论】:

  • 嘿,我看到你之前的回答说我的回答对你有帮助。我很高兴它成功了。如果确实有效,您介意接受我的回答吗?

标签: python-3.x for-loop


【解决方案1】:

您可以使用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())

【讨论】:

    猜你喜欢
    • 2021-04-19
    • 2015-04-22
    • 1970-01-01
    • 2017-01-18
    • 2013-06-21
    • 2020-06-16
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多