How to Extend the UI
PyBreeze supports extending the UI with custom tabs using the EDITOR_EXTEND_TAB
dictionary. You can add any PySide6 QWidget as a new tab in the editor.
Basic Example
from PySide6.QtWidgets import QWidget, QGridLayout, QLineEdit, QPushButton, QLabel
from pybreeze import start_editor, EDITOR_EXTEND_TAB
class TestUI(QWidget):
"""A simple custom tab widget."""
def __init__(self):
super().__init__()
self.grid_layout = QGridLayout(self)
self.grid_layout.setContentsMargins(0, 0, 0, 0)
self.label = QLabel("")
self.line_edit = QLineEdit()
self.submit_button = QPushButton("Submit")
self.submit_button.clicked.connect(self.show_input_text)
self.grid_layout.addWidget(self.label, 0, 0)
self.grid_layout.addWidget(self.line_edit, 1, 0)
self.grid_layout.addWidget(self.submit_button, 2, 0)
def show_input_text(self):
self.label.setText(self.line_edit.text())
# Register the custom tab
EDITOR_EXTEND_TAB.update({"My Custom Tab": TestUI})
# Start the editor with the custom tab
start_editor()
How It Works
Import
EDITOR_EXTEND_TABfrompybreeze.Create a class that extends
QWidget(or any QWidget subclass).Add your widget class to the
EDITOR_EXTEND_TABdictionary with a display name as the key.Call
start_editor()– your tab will appear alongside the default tabs.
Note
You must register your custom tabs in EDITOR_EXTEND_TAB before calling
start_editor(), as the tabs are loaded during window initialization.
Advanced: Plugin-Based Tabs
You can also add custom tabs via the plugin system by placing a plugin file
in the jeditor_plugins/ directory:
# jeditor_plugins/my_custom_tab.py
from PySide6.QtWidgets import QWidget, QVBoxLayout, QTextEdit
from pybreeze import EDITOR_EXTEND_TAB
class MyToolWidget(QWidget):
def __init__(self):
super().__init__()
layout = QVBoxLayout(self)
self.text_edit = QTextEdit()
self.text_edit.setPlaceholderText("My custom tool...")
layout.addWidget(self.text_edit)
EDITOR_EXTEND_TAB.update({"My Tool": MyToolWidget})
This plugin will be auto-discovered and loaded when PyBreeze starts.