前提・実現したいこと
PyrhonのTkinterをつかってグラフを画面の真ん中に表示させたい。
発生している問題・エラーメッセージ
.grid()を使って"frame"の中心に"LabelFrame(border)"を表示させようと思っています。
ここで、tk.LabelFrameの親ウィジットに"frame"を指定するとなぜかLabelFrameが左上に配置され、anchorなどを指定しても位置が変わりませんでした。また、frameが消えてしまいました。
左上に表示される
import tkinter as tk # 1. メインウィンドウの作成 root = tk.Tk() root.title("Application") root.resizable(width=False,height=False) #ウィンドウ幅の固定 root.geometry("700x500") #=== オプション:フレームをつくる frame = tk.Frame(root, width=700, height=300, bg="#000080") frame.grid(column=0, row=0) #=== オプション:ラベルフレームウィジットをつくる border = tk.LabelFrame(frame, text="Form", fg='white', bg='#444', relief=tk.FLAT) border.grid(column=0, row=0) innerBox = tk.Frame(border, width=300, height=100) innerBox.grid() root.mainloop()
一方、親ウィジットをrootとするとframe内の真ん中に表示されました。
中央に表示される
import tkinter as tk # 1. メインウィンドウの作成 root = tk.Tk() root.title("Application") root.resizable(width=False,height=False) #ウィンドウ幅の固定 root.geometry("700x500") #=== オプション:フレームをつくる frame = tk.Frame(root, width=700, height=300, bg="#000080") frame.grid(column=0, row=0) #=== オプション:ラベルフレームウィジットをつくる border = tk.LabelFrame(root, text="Form", fg='white', bg='#444', relief=tk.FLAT) border.grid(column=0, row=0) innerBox = tk.Frame(border, width=300, height=100) innerBox.grid() root.mainloop()
frameの中央に配置したい場合、.gridの指定の仕方として、親ウィジットにframeを指定するのが正しい認識ですが、なぜこれだと真ん中に表示されず、rootだと画面の真ん中ではなくframeの真ん中に表示されるのでしょうか?
該当のソースコード
border = tk.LabelFrame(frame, text="Form", fg='white', bg='#444', relief=tk.FLAT)
回答1件
あなたの回答
tips
プレビュー