2013-05-16 52 views
0

我正在嘗試使用.grid()來製作tkinter佈局。我的所有按鈕都對齊在左側,我想在右側放置一個文本框。問題是,當我嘗試這樣做時,會弄亂左邊的按鈕。我試圖使用多個框架,但它似乎不工作。有任何想法嗎?Python Tkinter佈局問題

回答

3

的瞭解網格幾何管理中最重要的事情之一是columnspanrowspan關鍵字:

import Tkinter as tk 

root = tk.Tk() 
buttons = [tk.Button(root,text=str(i)) for i in range(6)] 
for i,b in enumerate(buttons): 
    b.grid(row=i,column=0) 

textbox = tk.Text(root) 
textbox.grid(row=0,column=1,rowspan=6) 

root.mainloop() 

注意的是,這裏的典型用法是使用具有正確的columnspanrowspan網格化一個Frame。然後你可以使用它來管理數據。以上面我所另一種方法是使用一個Frame容納所有按鈕,然後電網Text小部件就在旁邊:

import Tkinter as tk 

root = tk.Tk() 
frame = tk.Frame(root) 
frame.grid(row=0,column=0) 
buttons = [tk.Button(frame,text=str(i)) for i in range(6)] 
for i,b in enumerate(buttons): 
    b.grid(row=i,column=0) 

textbox = tk.Text(root) 
textbox.grid(row=0,column=1) 

root.mainloop() 
2

如果您使用的是網格幾何管理器,它是沒有必要的將幀用於2列布局。您可以使用rowspan來調整文本窗口小部件的高度爲按鈕數量:

from Tkinter import * 

root = Tk() 
N = 5 

for i in range(N): 
    Button(root, text="Button %s" % i).grid(row=i, column=0, padx=5) 
Text(root, width=30).grid(row=0, column=1, rowspan=N, padx=5) 

root.mainloop()