2011-12-26 58 views
3

我剛剛學會了如何在Python(3.2.2)中使用tkinter,並且在使用網格管理器時遇到了一些問題。例如,當我放置button.grid(sticky = SE)時,該按鈕不會放在右下角,而只是放在左上角,忽略粘滯值。我在這裏做錯了什麼?我試圖搜索它,但我無法真正發現我做錯了什麼。Python tkinter網格管理器?

+0

如果你得到有用的答案,一定要投票並接受。 – Dave 2011-12-26 16:12:41

回答

4

您可能需要爲包含按鈕的小部件設置最小大小。 如果您不這樣做,容器小部件可能會縮小,只佔用顯示按鈕所需的空間。如果是這樣,粘性選項將毫無意義,因爲容器小部件沒有空間顯示任何區別。

例如,使用一個tk.Frame作爲容器插件:

import Tkinter as tk 

class SimpleApp(object): 
    def __init__(self, master, **kwargs): 
     title = kwargs.pop('title') 
     frame = tk.Frame(master, borderwidth=5, bg = 'cyan', **kwargs) 
     frame.grid() 
     button = tk.Button(frame, text = title) 
     button.grid(sticky = tk.SE) 
     frame.rowconfigure('all', minsize = 200) 
     frame.columnconfigure('all', minsize = 200) 

def basic(): 
    root = tk.Tk() 
    app = SimpleApp(root, title = 'Hello, world') 
    root.mainloop() 
basic() 

產生

enter image description here


PS。我沒有安裝在Python3.2,所以我不能對此進行測試Tkinter的,但我認爲你需要的唯一的變化,以與Python3.2這項工作是

import tkinter as tk 

,而不是

import Tkinter as tk 
1

當你說「我在這裏做錯了什麼」時,你需要發佈你的代碼,否則任何人如何能夠猜出什麼是錯的。

以下工作正常,將按鈕放置在網格單元的右下角(SE) - 默認爲中心,而不是左上角(NW)。

from tkinter import Button, Label, Entry, Tk, SE 
root = Tk() 
Label(text="Lots o' Stuff", width=30, height=15, 
     borderwidth=2, relief="raised").grid(rowspan=2) 
Entry().grid(row=0, column=2) 
Button(text="Hit Me").grid(row=1, column=2, sticky=SE) 
root.mainloop()