# 显示excel内容的回调函数 def show_excel(self): # 创建表格用于显示第一个工作表 columns1 = [col[0] for col in self.record_sheet.iter_cols()] treeview1 = ttk.Treeview(self.container1, columns=columns1, show="headings") 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(values_only=True): treeview1.insert("", tk.END, values=row) # 创建表格用于显示第二个工作表 columns2 = [col[0] for col in self.data_sheet.iter_cols()] 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(values_only=True): treeview2.insert("", tk.END, values=row) # 设置文本框大小一致 self.material_name.config(width=20) self.material_qty.config(width=20) treeview1.config(width=80) treeview2.config(width=80)這段代碼報_tkinter.TclError: unknown option "-width"
时间: 2024-04-26 12:25:19 浏览: 127
这个错误是因为在代码中使用了不支持的Treeview参数"-width"。在Tkinter中,Treeview控件没有-width参数。
你可以尝试将代码中的"-width"改成"-minwidth",因为Treeview控件支持"-minwidth"参数,用于设置列的最小宽度。如果这样修改后还有问题,请检查代码中是否还有其他不支持的参数。
相关问题
# 显示excel内容的回调函数 def show_excel(self): # 创建表格用于显示第一个工作表 columns1 = [col[0] for col in self.record_sheet.iter_cols()] treeview1 = ttk.Treeview(self.container1, columns=columns1, show="headings") 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(values_only=True): treeview1.insert("", tk.END, values=row) # 创建表格用于显示第二个工作表 columns2 = [col[0] for col in self.data_sheet.iter_cols()] 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(values_only=True): treeview2.insert("", tk.END, values=row) # 设置文本框大小一致 self.material_name1.config(width=20) self.material_qty.config(width=20) # treeview1.config(minwidth=80) # treeview2.config(minwidth=80)什麽意思
这段代码是展示Excel表格内容的回调函数。它使用了Python的openpyxl库来读取Excel文件中的内容,并使用tkinter和ttk库来创建GUI界面并展示Excel表格内容。具体来说,该函数会创建两个表格来展示Excel文件中的两个工作表的内容,并设置表格的列标题和列宽度,最后将每个单元格的数据插入到表格中。
注释部分的代码是对表格宽度的设置,但被注释掉了,你可以根据需要进行修改。
显示excel内容的回调函数 def show_excel(self): # 创建表格用于显示第一个工作表 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") 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) # 设置文本框大小一致 self.material_name1.config(width=20) self.material_qty.config(width=20)這些表格中的數據需要用所有綫框框起來
要让这些表格中的数据周围使用所有的线框进行框起来,可以在`show_excel`函数中,在两个表格中关于创建和配置`TreeView`的代码前后添加以下代码:
```
style = ttk.Style()
style.configure("Treeview", rowheight=25, borderwidth=1, relief="solid", font=('Arial', 10))
style.configure("Treeview.Heading", font=('Arial', 10, 'bold'))
style.layout("Treeview", [('Treeview.treearea', {'sticky': 'nswe'})])
```
这样,就可以将表格中的数据周围使用所有的线框进行框起来。其中,`borderwidth`和`relief`参数用于设置边框的宽度和样式。在这里,`borderwidth`被设置为1,`relief`被设置为`solid`,表示边框是实线。
需要注意的是,这些代码将对所有的`TreeView`控件(不仅仅是本例中的这两个表格)应用相同的样式。如果只想对这两个表格应用所有线框,请将`style.configure`和`style.layout`方法的参数从`"Treeview"`改为相应的表格名称。
阅读全文