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

标签 python user-interface tkinter python-2.x

您能否看一下此 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()

enter image description here

最佳答案

通过编码:

tree = ttk.Treeview( root, columns=('受影响的功能'))

您只创建了一列。

稍后在程序中,您插入了数据,就像有两列一样:

tree.insert( "",0,  values=("1A","1b"))

因此,Tkinter 创建一个没有空标题的附加列。这正是您的第一个屏幕截图所显示的内容。

那么您可以如何设计第二个屏幕截图中突出显示的 GUI?答案如下:

  • 第一步:

创建两列:

tree = ttk.Treeview(root, columns=('zero', 'one'))

请注意,我为列选择了更好的符号名称。这将引导您在所需的列中显示具有正确标题的数据:

enter image description here

  • 第二步:

但是正如您所看到的,这个 GUI 存在一个问题:空白区域看起来很难看。所以要摆脱它,你需要依赖 show选项:

tree['show'] = 'headings'

这将导致您正在寻找的结果:

enter image description here

  • 第三步:

在 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/

相关文章:

python - 未以管理员身份运行时出现 "cannot create temp dir for user data dir"错误

python - 使用分块传输编码和 gzip 压缩的网页的未压缩大小

python - 如何在Python中使用zeep设置默认xmlns?

java - 是否可以在 Java gui Canvas 上绘图并跟踪鼠标在 Canvas 上绘制的内容?

Python - 如何将 ttkthemes 包中的主题添加到 guizero 应用程序?

python - 在管理页面查看相册中的照片

java - IntelliJ IDEA 12 - Android GUI 设计器未成功更改应用程序主题

java - 如何向 GUI 添加一个 "console"之类的窗口?

windows - 按下 tkinter 按钮时如何播放声音?

python - 如何将按键绑定(bind)到 Tkinter 中的按钮