您能否看一下此 Tkinter 代码并让我知道为什么我无法将值插入到正确的列中?
正如您从附图中看到的那样,它似乎正在向第一列添加空字符串!
from Tkinter import *
import ttk
root = Tk()
tree = ttk.Treeview( root, columns=('Impacted Features'))
tree.heading('#0', text='Feature Class')
tree.heading('#1', text='Impacted Features')
tree.column('#0', width=100)
tree.column('#1', width=160)
tree.grid(row=4, columnspan=6, sticky='nsew')
tree.insert( "",0, values=("1A","1b"))
root.mainloop()
最佳答案
通过编码:
tree = ttk.Treeview( root, columns=('受影响的功能'))
您只创建了一列。
稍后在程序中,您插入了数据,就像有两列一样:
tree.insert( "",0, values=("1A","1b"))
因此,Tkinter 创建一个没有空标题的附加列。这正是您的第一个屏幕截图所显示的内容。
那么您可以如何设计第二个屏幕截图中突出显示的 GUI?答案如下:
- 第一步:
创建两列:
tree = ttk.Treeview(root, columns=('zero', 'one'))
请注意,我为列选择了更好的符号名称。这将引导您在所需的列中显示具有正确标题的数据:
- 第二步:
但是正如您所看到的,这个 GUI 存在一个问题:空白区域看起来很难看。所以要摆脱它,你需要依赖 show
选项:
tree['show'] = 'headings'
这将导致您正在寻找的结果:
- 第三步:
在 Python 中,一切都是对象,所以让我重新设计您的程序,以便您可以根据需要缩放它:
import Tkinter as Tk
import ttk
class TreeViewDemo(Tk.Frame):
def __init__(self, master):
Tk.Frame.__init__(self, master)
self.master = master
self.master.title("Tree View Demo")
# The following 2 lings will expand the widgets as window resizes
# Can be removed if the effect is not desired
self.master.grid_rowconfigure(0,weight=1)
self.master.grid_columnconfigure(0,weight=1)
self.create_GUI()
def create_GUI(self):
self.tree = ttk.Treeview(self.master, columns=('zero', 'one'))
self.tree.heading('zero', text='Feature Class')
self.tree.heading('one', text='Impacted Features')
self.tree.column('zero')
self.tree.column('one')
self.tree.grid(row=0, column=0, sticky='nsew')
self.tree['show'] = 'headings'
self.tree.insert('', '0', values=("1A","1b"))
def main():
root=Tk.Tk()
d = TreeViewDemo(root)
root.mainloop()
if __name__ == '__main__':
main()
关于python - 在 Tkinter TreeView 中插入数据以更正列时面临问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42942933/