2015-10-24 62 views
0

我正在創建一個GUI使用pythons Tkinter(我使用Python 2.7,如果它有所作爲)。我想添加一個表,所以我也使用tkintertable包。我的代碼表爲:如何使tkintertable表可調整大小

import Tkinter as tk 
from tkintertable.Tables import TableCanvas 
class createTable(tk.Frame): 
    def __init__(self, master=None): 
     tk.Frame.__init__(self, master) 
     self.grid() 
     self.F = tk.Frame(self) 
     self.F.grid(sticky=tk.N+tk.S+tk.E+tk.W) 
     self.createWidgets() 
    def createWidgets(self): 
     self.table = TableCanvas(self.F,rows=30,cols=30) 
     self.table.createTableFrame() 
app = createTable() 
app.master.title('Sample Table') 
app.mainloop() 

我想讓我看到的行數和列數在改變框架大小時發生變化。目前有13行和4列顯示。我想讓更大的窗戶看到更多。任何建議如何實現這一點將不勝感激! 非常感謝你的幫助

回答

1

爲了實現你想要做的事情,不需要太多。

這裏的關鍵字是grid_rowconfiguregrid_columnconfigure。 默認情況下,網格行在創建後不會在窗口大小發生更改時展開。使用tk.Frame().grid_rowconfigure(row_id, weight=1)這種行爲會改變。

你錯過的第二件事是你的createTable類(請考慮重命名,因爲它聽起來像一個函數)沒有設置粘滯。

import Tkinter as tk 
from tkintertable.Tables import TableCanvas 
class createTable(tk.Frame): 
    def __init__(self, master=None): 
     tk.Frame.__init__(self, master) 
     ######################################### 
     self.master.grid_rowconfigure(0, weight=1) 
     self.master.grid_columnconfigure(0, weight=1) 

     self.grid_rowconfigure(0, weight=1) 
     self.grid_columnconfigure(0, weight=1) 

     self.grid(sticky=tk.NW+tk.SE) 
     ######################################### 
     self.F = tk.Frame(self) 
     self.F.grid(row=0, column=0, sticky=tk.NW+tk.SE) 
     self.createWidgets() 

    def createWidgets(self): 
     self.table = TableCanvas(self.F,rows=30,cols=30) 
     self.table.createTableFrame() 

app = createTable() 
app.master.title('Sample Table') 
app.mainloop() 

應該爲你做的伎倆。