[英]Table of widgets in Python with Tkinter
我想在python下使用Tkinter將表放入GUI的Label Frame中,該表將不僅包含靜態數據,而且還包含諸如按鈕,輸入項,檢查按鈕等小部件。
例如:
表格1:
[ Nr. | Name | Active | Action ]
----------------------------------
[ 1 | ST | [x] | [Delete] ]
[ 2 | SO | [ ] | [Delete] ]
[ 3 | SX | [x] | [Delete] ]
[x]
是一個檢查按鈕, [Delete]
是一個按鈕
您可以在框架中使用grid
幾何管理器來按需布置小部件。 這是一個簡單的例子:
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.