python - 出现 Tkinter Treeview 可用空间
问题描述
按下简单调用fill_table()
函数的按钮后,表格中会出现一个空闲空间。为什么会发生这种情况以及如何避免这种情况?我的代码:
import tkinter as tk
import tkinter.ttk as ttk
def fill_table():
required_columns = ['col1', 'col2', 'col3']
table_treeview["columns"] = required_columns
table_treeview["show"] = "headings"
for col in required_columns:
table_treeview.column(col, width=90)
table_treeview.heading(col, text=col)
root = tk.Tk()
table_treeview = ttk.Treeview(root)
table_treeview.pack()
button = tk.Button(root, text='Restart', command=fill_table)
button.pack()
fill_table()
root.mainloop()
图片:
解决方案
似乎如果您在启动 mainloop 之后运行它,那么它不会等到函数结束来重绘小部件,但是当您创建新列时,它会使用默认大小和刷新窗口创建它,以便调整窗口大小。之后将其width=90
改回较小的尺寸,但它不会改变窗口的大小 - 所以你在窗口中有空白空间。
但是如果我在之后使用table_treeview["show"] = "headings"
它width=90
不会调整列的大小并且窗口不会改变大小
(在 Linux Mint 上测试)
我对列使用了不同名称的第二个函数,以查看它是否可以更改列。
import tkinter as tk
import tkinter.ttk as ttk
def fill_table():
required_columns = ['col1', 'col2', 'col3']
table_treeview["columns"] = required_columns
for col in required_columns:
table_treeview.column(col, width=90)
table_treeview.heading(col, text=col)
table_treeview["show"] = "headings" # use after setting column's size
def fill_table_2():
required_columns = ['colA', 'colB', 'colC']
table_treeview["columns"] = required_columns
for col in required_columns:
table_treeview.column(col, width=90)
table_treeview.heading(col, text=col)
table_treeview["show"] = "headings" # use after setting column's size
root = tk.Tk()
table_treeview = ttk.Treeview(root)
table_treeview.pack()
button = tk.Button(root, text='Restart', command=fill_table_2)
button.pack()
fill_table()
root.mainloop()
推荐阅读
- python - 将本地文件引用到 Python 文件
- vue.js - 无论Vuetify卡片中是否隐藏内容,如何修复按钮?
- android - 导入 android.app.NotificationChannel 错误
- jquery - 验证 Bootstrap 4 时复选框下方的错误消息
- jms - jms queue receiver which always run in backgrond
- javascript - 将 callack 的值绑定到实例 nodejs 的属性
- graphql - 如何在 Gatsby 中对 GraphQL 查询进行单元测试
- python - 调用构造函数时在python中解析多级和多级继承的方法顺序
- c# - 租户会话在 IRealTimeNotifier 中丢失
- joomla - Joomla 菜单上没有显示一些常见的 Fontawesome 图标