python treeview style.layout
时间: 2023-08-30 21:01:26 浏览: 53
treeview style.layout 是用于设置 Python tkinter 中 Treeview 控件的样式布局。Treeview 控件是用于显示层级数据的小部件,通常用于展示树形结构的数据。
样式布局(style.layout)是 Treeview 控件用来定义不同元素的样式和布局的属性。可以通过设置 style.layout 中的各个元素的属性来改变 Treeview 控件的外观和布局。
style.layout 中的元素可以包括插入标签(insert), 树节点(heading)和普通项目(item)。每个元素都有自己的属性,比如插入标签可以设置其文本的对齐方式、字体、颜色等;树节点可以设置展开和折叠图标的样式;普通项目可以设置其文本的对齐方式、字体、颜色等。
样式布局可以通过缩进、填充、边距等属性来改变 Treeview 控件中的元素的位置和宽度。比如可以通过设置 padding 属性来调整元素的边距,通过设置 spacing 属性来调整元素之间的间距。
除了通过样式布局来改变 Treeview 控件的外观,还可以通过设置样式文件(style.theme_use)或直接对控件进行样式设置(style.configure)来改变控件的样式。
总之,treeview style.layout 是用来设置 Python tkinter 中 Treeview 控件的样式布局,通过设置元素的属性和布局,可以改变 Treeview 控件的外观和布局。可以根据需要调整各个元素的样式和位置,以实现自定义的展示效果。
相关问题
def show_excel(self): style = ttk.Style() style.configure("MyTreeview1.Treeview", rowheight=25, borderwidth=1, relief="solid", font=('Arial', 10)) style.configure("MyTreeview1.Treeview.Heading", font=('Arial', 10, 'bold')) style.layout("MyTreeview1.Treeview", [('MyTreeview1.Treeview.treearea', {'sticky': 'nswe'})]) # 创建表格用于显示第一个工作表 columns1 = next(self.record_sheet.iter_rows(min_row=1, max_row=1, values_only=True)) treeview1 = ttk.Treeview(self.container1, columns=columns1, show="headings", style="MyTreeview1.Treeview") treeview1.grid(row=1, column=3, rowspan=1, padx=5, pady=5, sticky="nsew") # 设置表格列的标题和宽度 for col in columns1: treeview1.heading(col, text=col) treeview1.column(col, width=100, anchor="center") # 显示第一个工作表的内容 for row in self.record_sheet.iter_rows(min_row=2, values_only=True): row_values = [cell if cell is not None else "" for cell in row] if all(not bool(cell) for cell in row_values): continue treeview1.insert("", tk.END, values=row_values) # 创建表格用于显示第二个工作表 style.configure("MyTreeview2.Treeview", rowheight=25, borderwidth=1, relief="solid", font=('Arial', 10)) style.configure("MyTreeview2.Treeview.Heading", font=('Arial', 10, 'bold')) style.layout("MyTreeview2.Treeview", [('MyTreeview2.Treeview.treearea', {'sticky': 'nswe'})]) columns2 = next(self.data_sheet.iter_rows(min_row=1, max_row=1, values_only=True)) treeview2 = ttk.Treeview(self.container1, columns=columns2, show="headings", style="MyTreeview2.Treeview") treeview2.grid(row=3, column=3, padx=5, pady=5, sticky="nsew") # 设置表格列的标题和宽度 for col in columns2: treeview2.heading(col, text=col) treeview2.column(col, width=100, anchor="center") # 显示第二个工作表的内容 for row in self.data_sheet.iter_rows(min_row=2, values_only=True): row_values = [cell if cell is not None else "" for cell in row] if all(not bool(cell) for cell in row_values): continue treeview2.insert("", tk.END, values=row_values) # 设置文本框大小一致 self.material_name1.config(width=20) self.material_qty.config(width=20)修改這段代碼在表格中顯示的數據用實綫將兩個表格數據都匡起來的完整修改代碼
以下是修改后的代码,将两个表格数据都用实线框起来,并将表格标题字体加粗:
```python
def show_excel(self):
style = ttk.Style()
# 设置第一个表格样式
style.configure("MyTreeview1.Treeview", rowheight=25, borderwidth=1, relief="solid", font=('Arial', 10))
style.configure("MyTreeview1.Treeview.Heading", font=('Arial', 10, 'bold'))
style.layout("MyTreeview1.Treeview", [('MyTreeview1.Treeview.treearea', {'sticky': 'nswe'})])
# 创建第一个表格用于显示第一个工作表
columns1 = next(self.record_sheet.iter_rows(min_row=1, max_row=1, values_only=True))
treeview1 = ttk.Treeview(self.container1, columns=columns1, show="headings", style="MyTreeview1.Treeview")
treeview1.grid(row=1, column=3, rowspan=1, padx=5, pady=5, sticky="nsew")
# 设置第一个表格列的标题和宽度
for col in columns1:
treeview1.heading(col, text=col)
treeview1.column(col, width=100, anchor="center")
# 显示第一个工作表的内容
for row in self.record_sheet.iter_rows(min_row=2, values_only=True):
row_values = [cell if cell is not None else "" for cell in row]
if all(not bool(cell) for cell in row_values):
continue
treeview1.insert("", tk.END, values=row_values)
# 设置第二个表格样式
style.configure("MyTreeview2.Treeview", rowheight=25, borderwidth=1, relief="solid", font=('Arial', 10))
style.configure("MyTreeview2.Treeview.Heading", font=('Arial', 10, 'bold'))
style.layout("MyTreeview2.Treeview", [('MyTreeview2.Treeview.treearea', {'sticky': 'nswe'})])
# 创建第二个表格用于显示第二个工作表
columns2 = next(self.data_sheet.iter_rows(min_row=1, max_row=1, values_only=True))
treeview2 = ttk.Treeview(self.container1, columns=columns2, show="headings", style="MyTreeview2.Treeview")
treeview2.grid(row=3, column=3, padx=5, pady=5, sticky="nsew")
# 设置第二个表格列的标题和宽度
for col in columns2:
treeview2.heading(col, text=col)
treeview2.column(col, width=100, anchor="center")
# 显示第二个工作表的内容
for row in self.data_sheet.iter_rows(min_row=2, values_only=True):
row_values = [cell if cell is not None else "" for cell in row]
if all(not bool(cell) for cell in row_values):
continue
treeview2.insert("", tk.END, values=row_values)
# 用实线框起两个表格
ttk.Separator(self.container1, orient="horizontal").grid(row=2, column=3, sticky="ew", pady=5)
ttk.Separator(self.container1, orient="vertical").grid(row=1, column=2, rowspan=3, sticky="ns", padx=5)
# 设置文本框大小一致
self.material_name1.config(width=20)
self.material_qty.config(width=20)
```
显示excel内容的回调函数 def show_excel(self): style = ttk.Style() style.configure("MyTreeview1.Treeview", rowheight=25, borderwidth=2, relief="solid", font=('Arial', 10)) style.configure("MyTreeview1.Treeview.Heading", font=('Arial', 10, 'bold')) style.layout("MyTreeview1.Treeview", [('MyTreeview1.Treeview.treearea', {'sticky': 'nswe'})]) # 创建表格用于显示第一个工作表 columns1 = next(self.record_sheet.iter_rows(min_row=1, max_row=1, values_only=True)) treeview1 = ttk.Treeview(self.container1, columns=columns1, show="headings", style="MyTreeview1.Treeview") treeview1.grid(row=1, column=3, rowspan=1, padx=5, pady=5, sticky="nsew") # 设置表格列的标题和宽度 for col in columns1: treeview1.heading(col, text=col) treeview1.column(col, width=100, anchor="center") # 显示第一个工作表的内容 for row in self.record_sheet.iter_rows(min_row=2, values_only=True): row_values = [cell if cell is not None else "" for cell in row] if all(not bool(cell) for cell in row_values): continue treeview1.insert("", tk.END, values=row_values) columns2 = next(self.data_sheet.iter_rows(min_row=1, max_row=1, values_only=True)) treeview2 = ttk.Treeview(self.container1, columns=columns2, show="headings") treeview2.grid(row=3, column=3, padx=5, pady=5, sticky="nsew") # 设置表格列的标题和宽度 for col in columns2: treeview2.heading(col, text=col) treeview2.column(col, width=100, anchor="center") # 显示第二个工作表的内容 for row in self.data_sheet.iter_rows(min_row=2, values_only=True): row_values = [cell if cell is not None else "" for cell in row] if all(not bool(cell) for cell in row_values): continue treeview2.insert("", tk.END, values=row_values)修改這個代碼將顯示數據時不要顯示公式,請顯示最後的結果
可以在显示工作表内容的 for 循环中,针对数据类型为公式的单元格,使用 cell.value 获取计算后的结果,而不是 cell 获取公式本身,从而显示最终结果。修改后的代码如下:
```python
def show_excel(self):
style = ttk.Style()
style.configure("MyTreeview1.Treeview", rowheight=25, borderwidth=2, relief="solid", font=('Arial', 10))
style.configure("MyTreeview1.Treeview.Heading", font=('Arial', 10, 'bold'))
style.layout("MyTreeview1.Treeview", [('MyTreeview1.Treeview.treearea', {'sticky': 'nswe'})])
# 创建表格用于显示第一个工作表
columns1 = next(self.record_sheet.iter_rows(min_row=1, max_row=1, values_only=True))
treeview1 = ttk.Treeview(self.container1, columns=columns1, show="headings", style="MyTreeview1.Treeview")
treeview1.grid(row=1, column=3, rowspan=1, padx=5, pady=5, sticky="nsew")
# 设置表格列的标题和宽度
for col in columns1:
treeview1.heading(col, text=col)
treeview1.column(col, width=100, anchor="center")
# 显示第一个工作表的内容
for row in self.record_sheet.iter_rows(min_row=2, values_only=True):
row_values = []
for cell in row:
if cell is None:
row_values.append("")
elif cell.data_type == 'f':
row_values.append(cell.value)
else:
row_values.append(cell.value)
if all(not bool(cell) for cell in row_values):
continue
treeview1.insert("", tk.END, values=row_values)
# 创建表格用于显示第二个工作表
columns2 = next(self.data_sheet.iter_rows(min_row=1, max_row=1, values_only=True))
treeview2 = ttk.Treeview(self.container1, columns=columns2, show="headings")
treeview2.grid(row=3, column=3, padx=5, pady=5, sticky="nsew")
# 设置表格列的标题和宽度
for col in columns2:
treeview2.heading(col, text=col)
treeview2.column(col, width=100, anchor="center")
# 显示第二个工作表的内容
for row in self.data_sheet.iter_rows(min_row=2, values_only=True):
row_values = []
for cell in row:
if cell is None:
row_values.append("")
elif cell.data_type == 'f':
row_values.append(cell.value)
else:
row_values.append(cell.value)
if all(not bool(cell) for cell in row_values):
continue
treeview2.insert("", tk.END, values=row_values)
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)