56574


tkinterでGUIアプリを作成しているのですが、テキストボックスのサイズを自由に設定したいと考えています。  
現在のコードは以下のようになっております。

[code]

    import tkinter
    import tkinter.ttk as ttk
    from tkinter.font import Font
    
    root = tkinter.Tk()
    
    # コンボボックスの作成(rootに配置,リストの値を編集不可(readonly)に設定)
    combo = ttk.Combobox(root, state='readonly')
    # リストの値を設定
    combo["values"] = ("IDを選択","@realDonaldTrump","@justinbieber","@ladygaga","@BarackObama","@katyperry")
    # デフォルトの値を食費(index=0)に設定
    combo.current(0)
    # コンボボックスの配置
    combo.grid(column = 0, row = 0, sticky = 'nsew')
    
    #エントリー
    EditBox = tkinter.Entry(width=50)
    EditBox.insert(tkinter.END,"挿入する文字列")
    EditBox.grid(column = 0, row = 1, sticky = 'nsew')
    
    get_b1 = tkinter.Button(root, text = '取得')
    get_b1.grid(column = 0, row = 2, sticky = 'nsew')
    
    tw_txt = tkinter.Entry(width=20)
    tw_txt.grid(column = 1, row = 1, sticky = 'nsew')
    
    root.grid_columnconfigure(0, weight = 1)
    root.grid_columnconfigure(1, weight = 1)
    
    root.mainloop()
    
[/code]

しかし、イメージ図は以下のようです。  
[![画像の説明をここに入力](https://i.stack.imgur.com/kSI5p.png)](https://i.stack.imgur.com/kSI5p.png)

どのようにしたら再現できるでしょうか。  
よろしくおねがい致します。


CC BY-SA 4.0
2019-07-11T11:28:07.307
56567
2019-07-11T23:46:38.130
27060
question
python3
tkinterのテキストボックスのサイズを自由に設定したい


実現したことはこんな感じでしょうか？

[![画像の説明をここに入力](https://i.stack.imgur.com/oyNZ7.png)](https://i.stack.imgur.com/oyNZ7.png)

コードの修正箇所は

  * 右側のテキストボックスの配置を右側のグリッド **縦３つ** を使用するようにパラメータを `column=1, row=0, rowspan=3` に修正
  * 右側のWidgetは複数行の入力が可能なようにEntry Wdigetから Text Widgetに変更
  * 右側の３つのWidgetは特にFill(グリッド全体に拡大)して表示する必要が無いので、 `sticky='nsew'` のパラメータを削除
  * Windowを拡大した際に右側のgridのエリアは拡大する必要がないので、`root.grid_columnconfigure(0, weight = 1)` をコメントアウト`
  * Windowを拡大した際に縦方向にも全体を拡大できうように、`grid_rowconfigure()` を追加
  * あと右側中央のテキストボックスが少し窮屈だったのでマージン `padx=10, pady=10` を追加

で、以下が修正をいれたコードとなります

[code]

    import tkinter
    import tkinter.ttk as ttk
    from tkinter.font import Font
    
    root = tkinter.Tk()
    
    # コンボボックスの作成(rootに配置,リストの値を編集不可(readonly)に設定)
    combo = ttk.Combobox(root, state='readonly')
    # リストの値を設定
    combo["values"] = ("IDを選択","@realDonaldTrump","@justinbieber","@ladygaga","@BarackObama","@katyperry")
    # デフォルトの値を食費(index=0)に設定
    combo.current(0)
    # コンボボックスの配置
    combo.grid(column = 0, row = 0) #sticky = 'nsew'削除
    
    #エントリー
    EditBox = tkinter.Entry(width=50)
    EditBox.insert(tkinter.END,"挿入する文字列")
    EditBox.grid(column = 0, row = 1, padx=10, pady=10) #sticky = 'nsew'削除
    
    get_b1 = tkinter.Button(root, text = '取得')
    get_b1.grid(column = 0, row = 2) #sticky = 'nsew'削除
    
    tw_txt = tkinter.Text(width=20)
    tw_txt.grid(column=1, row=0, rowspan=3, sticky = 'nsew') #配置を変更
    
    # root.grid_columnconfigure(0, weight = 1) 右側エリアは拡大の必要ないのでいらない
    root.grid_columnconfigure(1, weight = 1)
    root.grid_rowconfigure(0, weight = 1) # 追加
    root.grid_rowconfigure(1, weight = 1) # 追加
    root.grid_rowconfigure(2, weight = 1) # 追加
    
    root.mainloop()
    
[/code]


CC BY-SA 4.0
2019-07-11T23:46:38.130
56574
2019-07-11T23:46:38.130
24801
56567
answer