Drag widgets onto a canvas, arrange and configure them, then download a complete, ready-to-run PyQt5 or PySide6 script â no boilerplate to write by hand.
Open Form BuilderFrom basic form controls to containers, item views, and date/time pickers
Static text, mapped to QLabel.
Clickable button, mapped to QPushButton with an auto-generated click handler.
Single-line text input, mapped to QLineEdit with placeholder text support.
Multi-line text area, mapped to QTextEdit.
Boolean toggle, mapped to QCheckBox.
Exclusive choice control, mapped to QRadioButton and grouped with QButtonGroup.
Dropdown selector, mapped to QComboBox with comma-separated options.
Numeric stepper, mapped to QSpinBox with configurable min/max/value.
Horizontal range control, mapped to QSlider.
Visual progress indicator, mapped to QProgressBar.
Scrollable item list, mapped to QListWidget.
Labeled container for organizing related widgets, mapped to QGroupBox.
Numeric display, mapped to QLCDNumber for compact numeric output.
Simple container frame for grouping and decoration, mapped to QFrame.
Grid-like item view, mapped to QTableWidget.
Hierarchical item view, mapped to QTreeWidget.
Expanding horizontal gap to push widgets apart, mapped to QSpacerItem.
Expanding vertical gap to push widgets apart, mapped to QSpacerItem.
Horizontal layout placeholder for arranging child widgets in a row, mapped to QHBoxLayout.
Vertical layout placeholder for arranging child widgets in a column, mapped to QVBoxLayout.
Row-and-column layout placeholder for arranging child widgets in a grid, mapped to QGridLayout.
Compact toolbar-style button, mapped to QToolButton.
Vista-style button with a description line, mapped to QCommandLinkButton.
Decimal numeric stepper, mapped to QDoubleSpinBox.
Rotary numeric control, mapped to QDial.
Standalone scrollbar control, mapped to QScrollBar.
Full month calendar picker, mapped to QCalendarWidget.
Date-only input field, mapped to QDateEdit.
Time-only input field, mapped to QTimeEdit.
Combined date and time input, mapped to QDateTimeEdit.
Multi-page container switched by tabs, mapped to QTabWidget.
Multi-page container showing one page at a time, mapped to QStackedWidget.
Resizable divider between panes, mapped to QSplitter.
Collapsible, page-based container, mapped to QToolBox.
Top-level application menu bar, mapped to QMenuBar.
Bottom status/info bar, mapped to QStatusBar.
Scrollable viewport for oversized content, mapped to QScrollArea.
Built for fast, visual PyQt development
Click a widget in the palette to drop it onto the canvas, then drag to reposition and drag the corner handle to resize it.
Edit text, placeholders, options, ranges, variable names, and font size for the selected widget in real time.
Switch between PyQt5 and PySide6 at any time â generated imports and the exec() call adapt automatically.
Set the window title and canvas size to match the exact QWidget geometry you want.
Every push button gets a ready-made on_click() method wired up with clicked.connect(), so you can start adding logic immediately.
Download a complete, runnable Python file directly from the browser â no copy-pasting code snippets.
Toggle grid snapping and edge alignment so widgets line up cleanly as you drag them into place.
Fine-tune the position of the selected widget with the arrow keys, snapping to the grid step.
1. Add widgets â click any widget in the left-hand palette to place it on the canvas.
2. Arrange & configure â drag to position, resize from the corner handle, and set properties like text, options, and variable names in the panel on the right.
3. Export â click "Export .py" to download a self-contained PyQt5 or PySide6 script. It builds a QApplication, creates a MainWindow(QWidget) subclass, positions every widget with setGeometry(), and is ready to run with python your_app.py.
Widget Types
Supported Toolkits
Click .py Export
Open the builder, drag in a few widgets, and export working Python in minutes