2017-10-24 12 views
0

tkinterを使用して、左にいくつかのボタンを含むインターフェイスを作成したいと思いました。これはかなり静的で、右のウィジェットと並んでいます。 右側では、Textウィジェットの上にEntryウィジェットを追加したいと思います。どちらもそれに応じてサイズ変更されます(X軸のEntryウィジェットのみ)。グリッドマネージャtkinterのサイズ変更

このコードでは、Textウィジェットのサイズが変更されず、EntryウィジェットのサイズがTextウィジェットに合わせて変更されるだけです。ルートを列/行構成しようとすると、上部フレームが不自然にサイズ変更されます。ここで

は、このコードからTkinterのインターフェースの画像です:

output

from tkinter import * 

def main(): 
    root = Tk() 
    root.geometry("300x400") 

    framet = Frame(root) 
    frameb = Frame(root) 

    framet.grid(row=0, column=0, sticky='ew') 
    frameb.grid(row=1, column=0, sticky='news') 

    button1 = Button(framet, text='one', width=8) 
    button1.grid(row=0, column=0) 

    button2 = Button(frameb, text='two', width=8) 
    button2.grid(row=1, column=0, sticky='n') 

    entry1 = Entry(framet) 
    entry1.grid(row=0, column=1, sticky='ew') 

    text1 = Text(frameb, highlightbackground='black', highlightthickness=1) 
    text1.grid(row=1, column=1, sticky='news') 

    framet.columnconfigure(1, weight=1) 

if __name__ == '__main__': 
    main() 

あなたが見ることができるように、入力とテキストウィジェットがサイズ変更されません。どのようにボタンを静的にし、何も動かさない(サイズを変更するだけです)の間、これをどのように達成できますか?

答えて

0

これはあなたのために働くでしょうか?私は#のコメントで行を変更しました、私は本当に私が何をしたのかを覚えていないと思います。私はそれがうまくいかない1つの問題ですが、エントリーウィジェットはボタンと同じ高さではありません

from tkinter import * 

def main(): 
    root = Tk() 
    root.grid_columnconfigure(1,weight=1) # the text and entry frames column 
    root.grid_rowconfigure(0,weight=1) # all frames row 

    buttonframe = Frame(root) 
    buttonframe.grid(row=0, column=0, sticky="nswe") 
    entry_text_frame = Frame(root) 
    entry_text_frame.grid(row=0, column=1, sticky="nswe") 
    entry_text_frame.grid_columnconfigure(0,weight=1) # the entry and text widgets column 
    entry_text_frame.grid_rowconfigure(1,weight=1) # the text widgets row 

    button1 = Button(buttonframe, text='one', width=8) 
    button1.grid(row=0, column=0, sticky='nswe') 
    button2 = Button(buttonframe, text='two', width=8) 
    button2.grid(row=1, column=0, sticky='nswe') 

    entry1 = Entry(entry_text_frame) 
    entry1.grid(row=0, column=0, sticky='nswe') 

    text1 = Text(entry_text_frame, highlightbackground='black', highlightthickness=1) 
    text1.grid(row=1, column=0, sticky='news') 

    root.geometry("300x400") 

if __name__ == '__main__': 
    main() 
+2

あなたがあなたのやり方を説明してくれれば、この答えは良くなるだろう。さもなければ、重要な変更が何であるか把握するために、行単位で読む必要があります。また、 'geometry'コマンドを呼び出すときには関係ありません。 –

+0

しかし、これはうまくいった! – ShuckleShackle

+1

@BryanOakleyおかげさまで、スタック上のtkinterの説明は、この数ヶ月間私を本当に助けてくれました。あなたは多くの人々がPythonでGUI開発を学ぶのを助けています。< – citizen2077

関連する問題