繁体   English   中英

在Tkinter TreeView中插入数据以更正列时面临的问题

[英]Facing Issue on Inserting Data to correct Column in Tkinter TreeView

您能否看一下这个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.insert( "",0, values=("1A","1b"))更改为tree.insert( "",0, text="1A", values=("1b"))

第一列或icon列(索引#0 )采用text ,所有其他列采用values

完整代码:

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,  text="1A", values=("1b"))

root.mainloop()

通过编码:

tree = ttk.Treeview( root, columns=('Impacted Features'))

您仅创建了一列。

在程序的后面,您插入数据时就好像有两列一样:

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM