Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Tkinter的Python小部件表_Python_Tkinter - Fatal编程技术网

使用Tkinter的Python小部件表

使用Tkinter的Python小部件表,python,tkinter,Python,Tkinter,我想使用python下的Tkinter将一个表放入GUI中的标签框架中 该表不仅包含静态数据,还包含按钮、输入项、检查按钮等小部件。。。等 例如: 表1: [ Nr. | Name | Active | Action ] ---------------------------------- [ 1 | ST | [x] | [Delete] ] [ 2 | SO | [ ] | [Delete] ] [ 3 | SX | [x] | [Delete]

我想使用python下的Tkinter将一个表放入GUI中的标签框架中 该表不仅包含静态数据,还包含按钮、输入项、检查按钮等小部件。。。等

例如:

表1:

[ Nr. | Name | Active |  Action  ]
----------------------------------
[ 1   |  ST  |  [x]   | [Delete] ]
[ 2   |  SO  |  [ ]   | [Delete] ]
[ 3   |  SX  |  [x]   | [Delete] ]

[x]
是一个复选按钮,
[Delete]
是一个按钮

您可以在一个框架中使用
网格
几何体管理器来按需布局小部件。下面是一个简单的例子:

import Tkinter as tk
import time

class Example(tk.LabelFrame):
    def __init__(self, *args, **kwargs):
        tk.LabelFrame.__init__(self, *args, **kwargs)
        data = [
            # Nr. Name  Active
            [1,   "ST", True],
            [2,   "SO", False],
            [3,   "SX", True],
            ]

        self.grid_columnconfigure(1, weight=1)
        tk.Label(self, text="Nr.", anchor="w").grid(row=0, column=0, sticky="ew")
        tk.Label(self, text="Name", anchor="w").grid(row=0, column=1, sticky="ew")
        tk.Label(self, text="Active", anchor="w").grid(row=0, column=2, sticky="ew")
        tk.Label(self, text="Action", anchor="w").grid(row=0, column=3, sticky="ew")

        row = 1
        for (nr, name, active) in data:
            nr_label = tk.Label(self, text=str(nr), anchor="w")
            name_label = tk.Label(self, text=name, anchor="w")
            action_button = tk.Button(self, text="Delete", command=lambda nr=nr: self.delete(nr))
            active_cb = tk.Checkbutton(self, onvalue=True, offvalue=False)
            if active:
                active_cb.select()
            else:
                active_cb.deselect()

            nr_label.grid(row=row, column=0, sticky="ew")
            name_label.grid(row=row, column=1, sticky="ew")
            active_cb.grid(row=row, column=2, sticky="ew")
            action_button.grid(row=row, column=3, sticky="ew")

            row += 1

    def delete(self, nr):
        print "deleting...nr=", nr

if __name__ == "__main__":
    root = tk.Tk()
    Example(root, text="Hello").pack(side="top", fill="both", expand=True, padx=10, pady=10)
    root.mainloop()