Python/pyside2如何迭代5次,然后添加一行然后再次迭代?

问题描述 投票:0回答:1

我正在从一个大列表中填充 QtWidgets.QGridLayout,并且我正在尝试创建一个循环,该循环将一遍又一遍地添加一行 5 列,直到我用完列表中的内容。

这是我破碎的大脑正在挣扎的一个例子......

mylist =['thing001', 'thing002', 'thing003', 'thing004', 'thing005', 'thing006', 'thing007', 'thing008', 'thing009', 'thing010']

rowCount=0
colCount=0

def start():
   
    for each in mylist:
        i=0
        myThing = (str('btn_'+ each ))
        colCount=0
        rowCount=0
    
        #add a column until it reaches 5, then make a new row?
        for i in range(0,5):
            colCount += 1
            i+=1
            print ('Making Thing: ' + myThing +' | '+(str(rowCount)+':'+(str(colCount))))

        else:
            print('New Row!!!!!!!!!!!!!!!!!!!')
            colCount = 0
            rowCount += 1
            i+=1
                
start()

这给了我这个...

Making Thing: btn_thing001 | 0:1
Making Thing: btn_thing001 | 0:2
Making Thing: btn_thing001 | 0:3
Making Thing: btn_thing001 | 0:4
Making Thing: btn_thing001 | 0:5
New Row!!!!!!!!!!!!!!!!!!!
Making Thing: btn_thing002 | 0:1
Making Thing: btn_thing002 | 0:2
Making Thing: btn_thing002 | 0:3
Making Thing: btn_thing002 | 0:4
Making Thing: btn_thing002 | 0:5
New Row!!!!!!!!!!!!!!!!!!!

我想成为...

Making Thing: btn_thing001 | 0:1
Making Thing: btn_thing002 | 0:2
Making Thing: btn_thing003 | 0:3
Making Thing: btn_thing004 | 0:4
Making Thing: btn_thing005 | 0:5
New Row!!!!!!!!!!!!!!!!!!!
Making Thing: btn_thing006 | 1:1
Making Thing: btn_thing007 | 1:2
Making Thing: btn_thing008 | 1:3
Making Thing: btn_thing009 | 1:4
Making Thing: btn_thing010 | 1:5
New Row!!!!!!!!!!!!!!!!!!!

如何构建循环来输出我需要的内容?

python for-loop pyside2 qtwidgets qgridlayout
1个回答
0
投票

您在 foreach ... 循环中将 rowCount 重置为 0,因此不可避免地它始终为 0。另外 rowCount 和 colCount 应该是函数内的局部变量,因为全局不需要。将两者的赋值移到函数中和循环之前,并且不要重置 rowCount。

mylist =['thing001', 'thing002', 'thing003', 'thing004', 'thing005', 'thing006', 'thing007', 'thing008', 'thing009', 'thing010']
    

def start():
    rowCount = 0
    colCount = 0
    for each in mylist:
        i=0
        myThing = (str('btn_'+ each ))
        colCount=0
    
        #add a column until it reaches 5, then make a new row?
        for i in range(0,5):
            colCount += 1
            i+=1
            print ('Making Thing: ' + myThing +' | '+(str(rowCount)+':'+(str(colCount))))

        else:
            print('New Row!!!!!!!!!!!!!!!!!!!')
            colCount = 0
            rowCount += 1
            i+=1
                
start()
© www.soinside.com 2019 - 2024. All rights reserved.