我正在使用新的Dash “ v1.0”套件(请参阅下面的pip要求)。我想创建一个DataTable全角(就像一个<p>元素)。
我已将表设置如下(下面是完整的MWE):
dash_table.DataTable(
…
style_table={
'maxHeight': '50ex',
'overflowY': 'scroll',
'width': '100%',
'minWidth': '100%',
},
…
Run Code Online (Sandbox Code Playgroud)
但是,即使<div class="cell cell-1-1 dash-fixed-content">生成的HTML容器是全角的,<table>它所包含的容器也不是全角,如下面的演示所示。
问题是... 在同一个类似的代码可与短跑0.X ...
使用Dash 1.0,如何使单元格自动水平扩展,以使表格填满整个水平空间?
或者换句话说,如何<table>通过DataTable元素设置元素的样式?
0.x_requirements.txtdash-core-components==0.39.0
dash-html-components==0.13.2
dash-renderer==0.15.1
dash-table==3.1.7
dash==0.31.1
datetime
pandas==0.23.4
plotly==3.4.1
Run Code Online (Sandbox Code Playgroud)
0.x_testapp.pydash-core-components==0.39.0
dash-html-components==0.13.2
dash-renderer==0.15.1
dash-table==3.1.7
dash==0.31.1
datetime
pandas==0.23.4
plotly==3.4.1
Run Code Online (Sandbox Code Playgroud)
1.x_requirement.txtdash_renderer==1.0.0
dash-core-components==1.0.0
dash-html-components==1.0.0
dash-table==4.0.0
dash==1.0.0
pandas==0.24.2
plotly==3.10.0
Run Code Online (Sandbox Code Playgroud)
1.x_testapp.pyimport dash
import dash_table
import dash_html_components as html
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder2007.csv')
app = dash.Dash(__name__)
app.layout = html.Div(
[
html.P(
"foobar",
id='datatable-interactivity-container',
),
dash_table.DataTable(
id='table',
# data import
data=df.to_dict("rows"),
columns=[{"name": i, "id": i} for i in df.columns],
# table interactivity
editable=True,
# filtering=True,
sorting=True,
sorting_type="multi",
row_selectable="multi",
# row_deletable=True,
# table style (ordered by increased precedence: see
# https://dash.plot.ly/datatable/style in § "Styles Priority"
# style table
style_table={
'maxHeight': '50ex',
'overflowY': 'scroll',
'width': '100%',
'minWidth': '100%',
},
# style cell
style_cell={
'fontFamily': 'Open Sans',
'textAlign': 'center',
'height': '60px',
'padding': '2px 22px',
'whiteSpace': 'inherit',
'overflow': 'hidden',
'textOverflow': 'ellipsis',
},
style_cell_conditional=[
{
'if': {'column_id': 'State'},
'textAlign': 'left'
},
],
# style header
style_header={
'fontWeight': 'bold',
'backgroundColor': 'white',
},
# style filter
# style data
style_data_conditional=[
{
# stripped rows
'if': {'row_index': 'odd'},
'backgroundColor': 'rgb(248, 248, 248)'
},
{
# highlight one row
'if': {'row_index': 4},
"backgroundColor": "#3D9970",
'color': 'white'
}
],
),
]
)
if __name__ == '__main__':
app.run_server(debug=True)
Run Code Online (Sandbox Code Playgroud)
您可以向类中添加一个简单的单词,以便为您的应用程序提供全宽表格。
对此:
<div class="cell cell-1-1 dash-fixed-content">
Run Code Online (Sandbox Code Playgroud)
添加这个:
<div class="table table-bordered table-hover table-responsive cell cell-1-1 dash-fixed-content">
Run Code Online (Sandbox Code Playgroud)
这将为您提供 100% 的总宽度,并且它本质上是响应式的。如何?尝试调整浏览器的大小并查看效果。
希望这可以帮助。