2016-04-02 8 views
0

ラズベリーパイのPython 3.4.2およびTkinter 8.6を実行しています。グリッドレイアウトマネージャを使用して固定サイズのフレームを塗りつぶすテキストウィジェットを作成したいと思います。Python tkinterグリッドを使用してテキストウィジェットを固定サイズのフレームに埋め込みます。

以下のコードを実行すると、テキストウィジェットが800x600フレームを満たさないことがわかります。 Textの幅と高さの属性をフレームに塗りつぶすように設定することができますが、これはデフォルトのフォントでしか動作せず、フレームを正確に塗りつぶすことができません。彼らは拡大するよう

from tkinter import * 

class Test(Tk): 
    def __init__(self): 
    super().__init__() 
    self.text = frameText(self) 
    self.geometry('{}x{}'.format(800, 600)) 

def frameText(frame, **kw): 
    ysb = Scrollbar(frame) 
    xsb = Scrollbar(frame, orient = HORIZONTAL) 
    text = Text(frame, **kw) 
    ysb.configure(command = text.yview) 
    xsb.configure(command = text.xview) 
    text.configure(yscrollcommand = ysb.set, xscrollcommand = xsb.set) 
    text.grid(row = 0, column = 0, sticky = N+E+S+W) 
    ysb.grid(row = 0, column = 1, sticky = N+S) 
    xsb.grid(row = 1, column = 0, sticky = E+W) 
    return text 

if __name__ == '__main__': 
    Test().mainloop() 

答えて

1

あなたが行と列の非ゼロの重みを与えるために、グリッドを設定する必要が

from tkinter import * 

class Test(Tk): 
    def __init__(self): 
    Tk.__init__(self) 
    self.grid_columnconfigure(0, weight=1) 
    self.grid_rowconfigure(0, weight=1) 
    self.text = frameText(self) 
    self.geometry('{}x{}'.format(800, 600)) 

def frameText(frame, **kw): 
    ysb = Scrollbar(frame) 
    xsb = Scrollbar(frame, orient = HORIZONTAL) 
    text = Text(frame, **kw) 
    ysb.configure(command = text.yview) 
    xsb.configure(command = text.xview) 
    text.configure(yscrollcommand = ysb.set, xscrollcommand = xsb.set) 
    text.grid(row = 0, column = 0, sticky = N+E+S+W) 
    ysb.grid(row = 0, column = 1, sticky = "ns") 
    xsb.grid(row = 1, column = 0, sticky = E+W) 
    return text 

if __name__ == '__main__': 
    Test().mainloop() 
関連する問題