[英]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.