Nodes/MF-PipoNodes/MF Dropdown Menu
ComfyUI Node

MF Dropdown Menu

An editable dropdown you can wire into any workflow — resolution presets, styles, anything

By MomentFactory·Created 11 months ago·Updated 7 months ago· 1
MF Dropdown Menu
    • selected_value
    selectionmedium
    dropdown_optionslow medium high ultra

    ComfyUI gives you combo widgets on loaders, but a custom dropdown you control, whose value you can wire anywhere? That's the gap MF Dropdown Menu (MF_CustomDropdownMenu) fills. It's a plain node that renders a real select menu on the canvas - click it, pick an option, and the chosen string comes out the other side. Default options are low, medium, high, ultra (the author defaulted it to video-game graphics settings), and you're meant to replace them with your own.

    It's one of 13 nodes in MF PipoNodes (pierreb-mf / Moment Factory), a small pack with near-zero community footprint - so treat it as "nice utility, maintain it yourself" rather than "battle-tested." It's exactly the kind of quality-of-life node the ecosystem essay would slot next to rgthree's UX work, except this one is a single dropdown instead of a whole suite.

    How it works

    The trick is that the dropdown is almost entirely frontend. The node takes two STRING inputs:

    • selection - the currently chosen value (default medium).
    • dropdown_options - your list of choices, newline-separated (default low\nmedium\nhigh\nultra).

    The JavaScript in web/pipoNodes.js hides those raw strings and renders a real <select> with an EDIT button. Click EDIT, type your options one per line, and the dropdown rebuilds. What's clever (and a little fragile) is that your custom list lives in the dropdown_options widget, which means it's serialized into the workflow JSON - rename the list, save the workflow, and the options come back next load. The Python side is dead simple: it just passes selection straight through to the selected_value output.

    Where to wire it

    The value is any string, so it composes anywhere a STRING goes:

    • Resolution presets: 512x512, 768x768, 1024x1024 → drive a Width/Height pair (you'll need a couple of nodes to split the string, or feed it to something that parses it).
    • Style labels feeding a prompt-assembly node.
    • A checkpoint or LoRA switcher if you've got one that takes a name string.
    • Simplest of all: as a human-readable tag you log alongside generations.

    Install

    cd ComfyUI/custom_nodes/
    git clone https://github.com/pierreb-mf/ComfyUI-MF-PipoNodes
    cd ComfyUI-MF-PipoNodes
    pip install -r requirements.txt
    

    Restart ComfyUI (or search "MF PipoNodes" in ComfyUI Manager). Only aiohttp and pyyaml get pulled in - no downloads, no models.

    Gotchas

    • It's a UI widget. The output is whatever's selected in the dropdown; if you edit the workflow JSON by hand, selection is just a plain string field, and there's no validation that it matches an option.
    • EDIT is the only way to change options from the canvas - if you don't see the EDIT button, the web extension didn't load (check the browser console for a JS error; the pack's frontend has had rough edges on newer ComfyUI frontend builds).
    • Because the options are a serialized widget, keep the list in the node, not in a disconnected text file - that's the whole point of it persisting with the workflow.
    CategoryMF_PipoNodes/Utilities

    Inputs (2)

    NameTypeDefaultDescription
    selectionSTRINGmedium
    dropdown_optionsSTRINGlow medium high ultra

    Outputs (1)

    NameTypeDescription
    selected_valueSTRING