web-dev-qa-db-ja.com

テキストウィジェットを展開して、Tkinterの親フレーム全体を埋めます

私はこのTextウィジェットを取得しました。グリッドジオメトリマネージャーを使用して、親全体を展開および塗りつぶします。

私が見た例によると、このサンプルプログラムは動作するはずですが、動作しません。ウィンドウを拡張すると、コンテンツのサイズが変更されません。

from Tkinter import *
root = Tk()

input_text_area = Text(root)
input_text_area.grid(row=1, column=0, columnspan=4, sticky=W+E)
input_text_area.configure(background='#4D4D4D')

root.mainloop()

どんな助けでもありがたいです

Python 2.7(最新の2.xバージョン))で実行していて、PyCharmでコーディングしていますが、IDE =関係あります。

17
So Many Goblins

グリッドを使用する場合、親の余分なスペースは、行や列の「重み」に比例して割り当てられます(つまり、重みが2の列は、重みが1の列の2倍のスペースになります。 )。デフォルトでは、行と列の重みは0(ゼロ)であり、追加のスペースは与えられません。

ウィジェットの重みがゼロ以外であることを列に指定する必要があります。これにより、ウィンドウが大きくなったときに余分なスペースがその列に割り当てられます。

root.grid_columnconfigure(0, weight=1)

また、行の重みを指定する必要があります。すべての方向に拡大する場合は、スティッキー値としてN+S+E+Wを指定する必要があります。

20
Bryan Oakley

ウィンドウには1つのウィジェットしか含まれておらず、このウィジェットでウィンドウ全体を埋めたいので、packの代わりに gridジオメトリマネージャー を使用する方が簡単です。

input_text_area.pack(expand=True, fill='both')

expand=Trueは、ウィジェットを拡張して、ジオメトリマスターの余分なスペースを埋めるようにTkinterに指示します。 fill='both'は、ウィジェットを水平方向と垂直方向の両方に拡張できるようにします。

10
user2555451
from tkinter import *
root = Tk()

input_text_area = Text(root)
input_text_area.grid(row=0, column=0, columnspan=4, sticky=N+S+W+E)
input_text_area.configure(background='#4D4D4D')
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)

root.mainloop()

これがあなたが望むものかどうかはわかりません。しかし、これは画面全体を占めます。

5
Ajay