fujimonish
@fujimonish

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Python tkinterでFrameの背景色が消失してしまう事象について

解決したいこと

デスクトップアプリ作成の練習tkinterを使ってアプリのレイアウトを作成中です。
今回まずはFrameを配置して大まかなレイアウトを作成したのちに、各Frameにヴィジェットを配置しようとしているのですが、作成したFrameにヴィジェットを配置するとFrameの背景色が消失してしまいました。
背景色を消失させずにヴィジェット配置をしたいのですがどのようにすればよいのでしょうか?

以下Frameのみ配置したアプリ画面

image.png

labelframeを配置した際のアプリ画面

image.png

ソースコードは以下の通り

import tkinter

#メインウィンドウ作成
main_win=tkinter.Tk()
main_win.title("MY-Tool")
main_win.geometry("1000x600")

#メインフレーム作成

main_flm=tkinter.LabelFrame(main_win,labelanchor="n",text="日記ツール",width=990,
                            height=590,
                             relief=tkinter.RAISED,background="#FFFFFF"  )

sub_flm_1=tkinter.Frame(main_flm,width=480,height=500,relief= tkinter.RIDGE,
                        background="#FFD768")
sub_flm_2=tkinter.Frame(main_flm,width=500,height=120,relief= tkinter.RIDGE,
                        background="#F58220")
sub_flm_3=tkinter.Frame(main_flm,width=500,height=250,relief= tkinter.RIDGE,
                        background="#67a8dd")
sub_flm_4=tkinter.Frame(main_flm,width=480,height=60,relief= tkinter.RIDGE,
                        background="#ff69b4")
sub_flm_5=tkinter.Frame(main_flm,width=500,height=60,relief= tkinter.RIDGE,
                        background="#deb887")
sub_flm_6=tkinter.Frame(main_flm,width=250,height=120,relief= tkinter.RIDGE,
                        background="#deb887")
sub_flm_7=tkinter.Frame(main_flm,width=250,height=120,relief= tkinter.RIDGE,
                        background="#deb887")

label_frame1 = tkinter.LabelFrame(sub_flm_4,text="日付")
label1=tkinter.Label(label_frame1,text="ここの日付は変わる")
main_flm.pack(fill=tkinter.BOTH)

sub_flm_1.grid(row=1,column=0,rowspan=3,padx=1,pady=1)
sub_flm_2.grid(row=1,column=1,columnspan=2,padx=1,pady=1)
sub_flm_3.grid(row=3,column=1,columnspan=2,padx=1,pady=1)
sub_flm_4.grid(row=0,column=0,padx=1,pady=1)
sub_flm_5.grid(row=0,column=1,columnspan=2,padx=1,pady=1)
sub_flm_6.grid(row=2,column=1,padx=1,pady=1)
sub_flm_7.grid(row=2,column=2,padx=1,pady=1)

label_frame1.grid(row=0,column=0)
label1.pack()


main_win.mainloop()

自分で試したこと

label_frame1 = tkinter.LabelFrame(sub_flm_4,text="日付")を
label_frame1 = tkinter.LabelFrame(main_flm="日付")に変更すると背景色を消失させずに配置できましたが、あくまでヴィジェットの配置をしやすくするためにframeを分けたので、この方法はとりたくありません。

いいやり方があればご教示ください。

0

1Answer

フレームの大きさが内側の部品によってサイズ調整されてしまうので、sub_flm_4 配置時に上下左右に拡大してみてはいかがでしょうか?

sub_flm_4.grid(row=0, column=0, padx=1, pady=1, sticky=tkinter.NSEW)
0Like

Your answer might help someone💌