Craven
Craven

Reputation: 3

Populate window in Maya with icons and dynamically adjust depending on window size

I want to create a window in maya, that gets populated with icons from a specific path. I know how to do that, but I also want the icons to adjust dynamically as I change the size of the window. For example, let's say I have this: enter image description here

and I want when I resize to get this: enter image description here

here is a bit of the code I have :

import maya.cmds as cmds
import os
from os import listdir

def UI(*args):

    if cmds.window("Test", exists = True):
        cmds.deleteUI("Test")
    testwindow = cmds.window("Test", t="Test Window", sizeable = 1)

    cmds.scrollLayout('srcoll', p = "Test")
    cmds.rowColumnLayout("ColLayout", p = "Test", nc = 3)#I imagine the "nc" command is probably useless here, I am just leaving it for testing purposes

    cmds.showWindow("Test")

customPath = "C:\Users\$username$\Desktop"
customPathItems = listdir(customPath)


def popUI(*args):
    for item in customPathItems:
        if item.endswith("_icon.png"):
            cmds.iconTextButton(l = item, p = "ColLayout", i = customPath + "/" + item, w = 128, h = 128)


def buildUI(*args):
    UI()    
    popUI()     

buildUI()

Any help would be appreciated

Upvotes: 0

Views: 493

Answers (1)

Green Cell
Green Cell

Reputation: 4777

What you need is called a Flow layout, where the items inside the layout automatically adjust themselves when the widget is resized.

Here's an example from Qt's documentation that you can fully convert over to Python:

https://doc.qt.io/qt-4.8/qt-layouts-flowlayout-flowlayout-cpp.html

You can also google pyqt flow layout for ones already written in Python.

Upvotes: 1

Related Questions