ColumnWidget API¶
ColumnWidget(widget_id=None)
¶
Bases: BaseWidget
Create a multi-column layout container for horizontally arranging multiple widgets.
This widget uses <table>
elements to ensure maximum compatibility across various email clients.
You can place any other widgets (such as TextWidget
, CardWidget
, ChartWidget
, etc.)
in the column layout to create complex and beautiful email layouts.
Core features
- Auto columns: By default, it intelligently calculates the optimal number of columns based on the number of internal widgets.
- Manual columns: You can also manually specify a fixed number of columns between 1 and 4.
- Responsive: Layout automatically adjusts based on screen width, ensuring good experience on both desktop and mobile devices.
- Spacing control: Can customize horizontal spacing between columns.
Auto column rules
- 1 widget: 1 column
- 2 widgets: 2 columns
- 3 widgets: 3 columns
- 4 widgets: 2 columns (2x2 grid)
- 5-6 widgets: 3 columns
- 7-8 widgets: 2 columns
- 9+ widgets: 3 columns
Examples:
Create a two-column layout with a card on the left and chart on the right:
from email_widget.widgets import ColumnWidget, CardWidget, ChartWidget
import matplotlib.pyplot as plt
# Prepare left card
left_card = (CardWidget()
.set_title("Key Metrics")
.add_metadata("User Growth", "+15%")
.add_metadata("Revenue", "+12%"))
# Prepare right chart
plt.figure()
plt.plot([1, 2, 3], [4, 5, 2])
right_chart = ChartWidget().set_chart(plt)
# Create 2-column layout and add widgets
two_column_layout = (ColumnWidget()
.set_columns(2)
.set_gap("24px")
.add_widget(left_card)
.add_widget(right_chart))
# Assuming email is an Email object
# email.add_widget(two_column_layout)
Initialize ColumnWidget.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
widget_id
|
Optional[str]
|
Optional Widget ID. |
None
|
Functions¶
add_widget(widget)
¶
Add a widget to the column layout.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
widget
|
BaseWidget
|
Widget instance to add. |
required |
Returns:
Name | Type | Description |
---|---|---|
ColumnWidget |
ColumnWidget
|
Returns self to support method chaining. |
Examples:
add_widgets(widgets)
¶
Add multiple widgets to the column layout.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
widgets
|
List[BaseWidget]
|
List of widget instances to add. |
required |
Returns:
Name | Type | Description |
---|---|---|
ColumnWidget |
ColumnWidget
|
Returns self to support method chaining. |
Examples:
clear_widgets()
¶
Clear all widgets in the column layout.
Returns:
Name | Type | Description |
---|---|---|
ColumnWidget |
ColumnWidget
|
Returns self to support method chaining. |
Examples:
get_current_columns()
¶
Get the current number of columns actually used.
If in auto mode, returns the number of columns calculated based on widget count; otherwise returns the manually set number of columns.
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
Number of columns actually used. |
Examples:
get_effective_columns()
¶
Get the actual effective number of columns.
If set to auto mode, calculates based on current widget count; otherwise returns manually set number of columns.
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
Number of columns actually used. |
get_template_context()
¶
Get template context data required for rendering
get_widget_count()
¶
is_auto_mode()
¶
remove_widget(widget_id)
¶
Remove specified widget by widget ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
widget_id
|
str
|
ID of the widget to remove. |
required |
Returns:
Name | Type | Description |
---|---|---|
ColumnWidget |
ColumnWidget
|
Returns self to support method chaining. |
Examples:
remove_widget_by_index(index)
¶
Remove widget at specified index.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
index
|
int
|
Index of the widget to remove. |
required |
Returns:
Name | Type | Description |
---|---|---|
ColumnWidget |
ColumnWidget
|
Returns self to support method chaining. |
Raises:
Type | Description |
---|---|
IndexError
|
If index is out of range. |
Examples:
set_columns(columns)
¶
Set the number of columns in the layout.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
columns
|
int
|
Number of columns. -1 indicates auto mode, other values are limited between 1 and 4 columns. |
required |
Returns:
Name | Type | Description |
---|---|---|
ColumnWidget |
ColumnWidget
|
Returns self to support method chaining. |
Examples:
set_equal_width(equal=True)
¶
Set whether columns have equal width.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
equal
|
bool
|
Whether equal width, defaults to True. |
True
|
Returns:
Name | Type | Description |
---|---|---|
ColumnWidget |
ColumnWidget
|
Returns self to support method chaining. |
Note
This method is currently only a reserved interface, column widths are always equally divided in actual rendering.
Examples:
set_gap(gap)
¶
Set horizontal spacing between columns.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
gap
|
str
|
CSS spacing value, such as "20px", "1em". |
required |
Returns:
Name | Type | Description |
---|---|---|
ColumnWidget |
ColumnWidget
|
Returns self to support method chaining. |
Examples: