2011-12-26 11 views
3

私はちょうどPython(3.2.2)でtkinterを使う方法を学びました。グリッドマネージャを使っていくつか問題があります。たとえば、button.grid(sticky = SE)を置くと、ボタンは右下に配置されず、ちょうど左上に置かれ、固定値は無視されます。私はここで間違って何をしていますか?私はそれを検索しようとしましたが、私が間違っていることを本当に見つけることができませんでした。Pythonのtkinterグリッドマネージャーですか?

+0

有用な回答が得られたら、必ず投票して受け入れてください。 – Dave

答えて

4

おそらくボタンを含むウィジェットの最小サイズを設定する必要があります。 そうでない場合、コンテナウィジェットは、ボタンを表示するのに必要なスペースだけを占めるように縮小することがあります。そうであれば、コンテナウィジェットは違いを表示するスペースがないので、スティッキーオプションは無意味です。

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:コンテナウィジェットとしてtk.Frameを用いて例えば

、。私はTkinterのは、私はこれをテストすることはできませんPython3.2にインストールされていませんが、私はあなたが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()