2013-05-17 33 views
2

我想在桌面上使用Tkinter在python 下使用Tkinter表中將不僅僅內容靜態數據,而且還包括像按鈕,輸入條目,檢查按鈕的小部件...等與Tkinter的Python中的窗口小部件表

例如:

表1:

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

[x]是一個Check按鈕和[Delete]是一個按鈕

回答

3

您可以使用框架中的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() 
相關問題