关于DataGrid的使用


前言

前不久正好做了一个关于datagrid显示数据库内容的列表,觉得自己要学习的还有很多,在此记录一下所用到的用法和设置,希望对大家有所帮助(为什么不用listview呢,因为listview还要自己画网格线…还有datagrid具有一些box和可以自定义)


一、DataGrid是什么?

1、把它当做一个表格就行了,用来显示数据 2、会自动生成网格线

二、使用步骤

1.页面XAML设计代码

1、在这里使用了标题栏居中显示和表格列的居中设置
2、一些基础的设置可以参考:https://blog.csdn.net/kenjianqi1647/article/details/89883907?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163211351716780262586007%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163211351716780262586007&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-3-89883907.pc_search_insert_js_new&utm_term=%E5%A6%82%E4%BD%95%E8%AE%A9datagrid%E6%98%BE%E7%A4%BA%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93%E6%95%B0%E6%8D%AE%E5%88%97%E8%A1%A8%E5%A1%AB%E5%85%85grid&spm=1018.2226.3001.4187
3、对于最后的DataGridTemplateColumn,自定义了一个Button用作按键跳转

代码如下(示例):

                            <DataGrid x:Name="dianxianghuiluliebiao" FontSize="20" ItemsSource="{Binding}" Background="Transparent" BorderBrush="Transparent"  IsReadOnly="False" ColumnHeaderHeight="40" HeadersVisibility="All"  AutoGenerateColumns="False" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" SelectionUnit="CellOrRowHeader" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False"  CanUserSortColumns="False" RowHeight="35" AreRowDetailsFrozen="True" RowBackground="Transparent" >
                                <!--标题栏居中显示-->
                                <DataGrid.ColumnHeaderStyle>
                                    <Style TargetType="DataGridColumnHeader">
                                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
                                        <Setter Property="VerticalAlignment" Value="Center"/>
                                    </Style>
                                </DataGrid.ColumnHeaderStyle>

                                <DataGrid.Columns >
                                    <DataGridTextColumn Header="序号" Width="75"  Binding="{Binding Path=序号}" CanUserResize="False" IsReadOnly="True">
                                        <DataGridTextColumn.ElementStyle>
                                            <Style TargetType="TextBlock">
                                                <Setter Property="TextWrapping" Value="Wrap"/>
                                                <Setter Property="HorizontalAlignment" Value
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
datagrid通常是用于展示数据的控件,因此多线程主要用于获取数据和处理数据的操作。以下是一个使用多线程加载数据并更新datagrid的示例: ```python import tkinter as tk from tkinter import ttk import threading class DataGrid(tk.Frame): def __init__(self, master=None): tk.Frame.__init__(self, master) self.create_widgets() def create_widgets(self): self.treeview = ttk.Treeview(self) self.treeview["columns"] = ("column1", "column2") self.treeview.heading("#0", text="ID") self.treeview.column("#0", width=50) self.treeview.heading("column1", text="Column 1") self.treeview.column("column1", width=100) self.treeview.heading("column2", text="Column 2") self.treeview.column("column2", width=100) self.treeview.pack(fill=tk.BOTH, expand=True) def load_data(self, data): for item in data: self.treeview.insert("", tk.END, text=item[0], values=(item[1], item[2])) class App(tk.Tk): def __init__(self): tk.Tk.__init__(self) self.geometry("300x200") self.datagrid = DataGrid(self) self.datagrid.pack(fill=tk.BOTH, expand=True) self.load_data() def load_data(self): t = threading.Thread(target=self.load_data_thread) t.start() def load_data_thread(self): # 模拟获取数据 data = [] for i in range(10): data.append((i, f"Column 1 - {i}", f"Column 2 - {i}")) # 模拟处理数据 time.sleep(0.5) self.update_datagrid(data) def update_datagrid(self, data): self.datagrid.treeview.delete(*self.datagrid.treeview.get_children()) self.datagrid.load_data(data) if __name__ == "__main__": app = App() app.mainloop() ``` 在上面的示例中,我们使用了`threading.Thread`来创建一个新线程,在新线程中模拟获取和处理数据的操作,并且在操作完成后,调用主线程中的`update_datagrid`方法来更新datagrid。注意,在更新datagrid之前,我们需要先删除所有的行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值