3

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

4

2 に答える 2

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()

収量

ここに画像の説明を入力


PS。Python3.2 に tkinter がインストールされていないため、これをテストすることはできませんが、Python3.2 でこれを機能させるために必要な唯一の変更は次のとおりです。

import tkinter as tk

それ以外の

import Tkinter as tk
于 2011-12-26T14:34:48.540 に答える
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()
于 2011-12-26T14:52:53.657 に答える