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