小编Abb*_*bas的帖子

使用 StaticFiles 时如何在 FastAPI 根路径中加载与 index.html 不同的文件?

这是一个简单的静态 FastAPI 应用程序。通过此设置,即使根路径预计返回 a FileResponsecustom.html应用程序仍会返回index.html。如何让根路径工作并渲染custom.html

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse

app = FastAPI()


app.mount(
    "/",
    StaticFiles(directory="static", html=True),
    name="static",
)

@app.get("/")
async def index() -> FileResponse:
    return FileResponse("custom.html", media_type="html")
Run Code Online (Sandbox Code Playgroud)

python static-files starlette fastapi fileresponse

4
推荐指数
1
解决办法
3685
查看次数

WPF 组合框样式

下面是我的 ComboBox 样式代码。想法是在 ComboBox 周围放置边框并重用该样式。

<Application x:Class="WpfApplication1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="Window1.xaml">
  <Application.Resources>
    <Style x:Key="UserInputComboBoxStyle"
           TargetType="{x:Type ComboBox}">
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type ComboBox}">
            <Grid>
              <Border BorderBrush="Black"
                      BorderThickness="2"
                      VerticalAlignment="Stretch"
                      HorizontalAlignment="Stretch" />
              <ComboBox HorizontalAlignment="Stretch"
                        VerticalAlignment="Center"
                        HorizontalContentAlignment="Left"
                        VerticalContentAlignment="Center"
                        Margin="5">
              </ComboBox>
            </Grid>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)

但是,应用此样式后,在生成的组合框中,组合框项目不会显示。

<Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ComboBoxTest"
        Height="300"
        Width="300">
  <StackPanel>
    <ComboBox Margin="5"
              Style="{StaticResource UserInputComboBoxStyle}">
      <ComboBoxItem Content="Test0"
                    IsSelected="True" />
      <ComboBoxItem Content="Test1" />
      <ComboBoxItem Content="Test2" />
    </ComboBox>
  </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

为什么组合框项目不显示?


编辑:

最终解决了这个问题,但仍然想知道如何使用最少的 XAML 代码来完成此操作。

<Grid>
  <Border BorderBrush="Black"
          BorderThickness="2"
          CornerRadius="5">
    <ComboBox SelectedIndex="0" …
Run Code Online (Sandbox Code Playgroud)

wpf combobox styles

3
推荐指数
1
解决办法
3万
查看次数

DataColumn set a default value

我正在尝试为DataColumn设置默认值.如何为以下代码设置DataColumn(column3)的默认值

DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { 
                                        new DataColumn("Column1", typeof(String)),
                                        new DataColumn("Column2", typeof(String)), 
                                        new DataColumn("Column3", typeof(String)),
                                     });

string csvData = File.ReadAllText(csvPath);

foreach (string row in csvData.Split('\n'))
{
    if (!string.IsNullOrEmpty(row))
    {
        dt.Rows.Add();
        int i = 0;
        foreach (string cell in row.Split(','))
        {
            dt.Rows[dt.Rows.Count - 1][i] = cell;
            i++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# datatable datacolumn

3
推荐指数
2
解决办法
3万
查看次数

在 Pandas 中创建 DateTimeIndex

我第一次使用panda时遇到了困难

我有一个数据框,在单独的列中包含年、月、日和小时。

据我所知,这个数据框没有被索引。

我正在尝试为此数据框创建日期时间索引:

def createTimeStamp(year, month, day, hour): 
    return DatetimeIndex(datetime(.........))

df['TimeStamp'] = df.apply(createTimeStamp(df['year'], df['month'], df['day'], df['hour']))

df.set_index('TimeStamp')
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

python datetime pandas

3
推荐指数
2
解决办法
2万
查看次数

有条件地切片列表

我有以下列表:

alist = [['color1'],
        ['clr1', '361', '0'],
        ['clr2', '1', '0'],
        ['clr3', '77', '0'],
        ['clr4', '660', '73'],
        ['color2'],
        ['clr1', '201', '0'],
        ['clr2', '25', '0'],
        ['clr3', '312', '73'],
        ['clr4', '132', '314']]
Run Code Online (Sandbox Code Playgroud)

我需要将列表拆分成较小的列表.该列表包含列表.如果长度为1的列表中有一个元素(列表),它是拆分列表的起点,停止点是长度为1的列表中的另一个元素.拆分后,将其移动到名为nlist的列表中.到目前为止,我编写了以下代码:

idx = [i for i,x in enumerate(alist) if len(x) ==1]
idx.append(len(alist))
nlist = []
for i in range(0, len(idx)-1):
    nlist.append(alist[idx[i]:idx[i+1]])
Run Code Online (Sandbox Code Playgroud)

它确实产生了如下所需的结果:

nlist = [[['color1'],
        ['clr1', '361', '0'],
        ['clr2', '1', '0'],
        ['clr3', '77', '0'],
        ['clr4', '660', '73']],
        [['color2'],
        ['clr1', '201', '0'],
        ['clr2', '25', '0'],
        ['clr3', '312', '73'],
        ['clr4', '132', '314']]]
Run Code Online (Sandbox Code Playgroud)

有更多的pythonic方法吗?

python list-comprehension

2
推荐指数
1
解决办法
577
查看次数

MVVM DataGrid SelectedItem绑定未更新

我是.Net和C#的新手,对绑定有点困惑.我有应用程序实现MVVM并显示DataGrid.我想要实现的是当用户按下某个键组合时,当前所选单元格的内容被复制到下面行中的单元格.我已经尝试将DataGrid的SelectedItem绑定到ViewModel属性,但它永远不会更新.CommandParameter也不起作用,项目计数始终为0.因此我无法提取用户选择的单元格,也无法读取所选单元格的内容.有没有人有如何解决这个问题或实现这个功能的建议?提前致谢.代码:xaml:

<DataGrid Grid.Row="1" 
          Grid.Column="0" 
          Grid.ColumnSpan="9" 
          AutoGenerateColumns="False" 
          Height="Auto" 
          HorizontalAlignment="Left" 
          Name="dataGrid" 
          VerticalAlignment="Top" 
          Width="{Binding ElementName=grid4,Path=Width}"
          ScrollViewer.CanContentScroll="False" 
          FrozenColumnCount="1" 
          SelectionUnit="Cell" 
          SelectionMode="Extended" 
          CanUserSortColumns = "False" 
          CanUserReorderColumns="False" 
          CanUserResizeRows="False" 
          RowHeight="25" 
          RowBackground="LightGray" 
          AlternatingRowBackground="White"
          ScrollViewer.VerticalScrollBarVisibility="Visible" 
          ScrollViewer.HorizontalScrollBarVisibility="Visible"
          ItemsSource="{Binding Layers, Mode=TwoWay}"  
          SelectedItem="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.Selection, Mode=TwoWay}">
    <DataGrid.InputBindings>
        <KeyBinding Gesture="Shift" 
                    Command="{Binding ItemHandler}" 
                    CommandParameter="{Binding ElementName=dataGrid, Path=SelectedItems}">
        </KeyBinding>
    </DataGrid.InputBindings>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

视图模型:

private float _selection = 0.0f;
    public float Selection
    {
        get
        {
            return _selection;
        }
        set
        {
            if (_selection != value)
            {
                _selection = value;
                NotifyPropertyChanged("Selection");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

...

        public DelegateCommand<IList> SelectionChangedCommand …
Run Code Online (Sandbox Code Playgroud)

binding selecteditem .net-4.0 mvvm wpfdatagrid

1
推荐指数
1
解决办法
1万
查看次数