簡體   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