88310


tkinterを使ったGUIアプリを作成しております。  
その中でコンボボックスを使っていますが、  
プルダウンリストのフォントサイズが変更できません。

手元の環境では以下のコードで事象が発生します。

[code]

    import tkinter as tk
    from tkinter import *
    import tkinter.ttk as ttk
    from tkinter.font import Font
    
    def study_time():
        study_root = tk.Tk()
        study_root.title("勉強時間登録")
        study_root.geometry("600x200")
        study_frame = tk.Frame(study_root,bd=2,relief="ridge")
        study_frame.pack(fill="x")
        label1 = tk.Label(study_root,text="【勉強時間登録】",font=("",20),height=2)
        label1.pack(fill="x")
        ###コンボボックスのリストの文字サイズ指定###
        font = Font("", size=22)
        study_root.option_add("*TCombobox*Listbox.Font", font)
        ###コンボボックスのリストの文字サイズ指定###
        study_frame = tk.Frame(study_root,pady=15)
        study_frame.pack()
        study_label = tk.Label(study_frame,font=("",18),text="勉強時間")
        study_label.pack(side="left")
        study_time = ttk.Combobox(study_frame,font=("",22),width=13)
        study_time["values"] = ("0:00","0:30","1:00","1:30","2:00","2:30","3:00")
        study_time.pack(side="left",padx=10)
        study_time.config(state='readonly')
    
        study_root.mainloop()
        
    #####  GUI  #####
    root = tk.Tk()
    root.geometry("800x400")
    root.title("study_time")
    push_button1 = tk.Button(root,text = 'study_time', font=("MSゴシック",18), \
     fg='#000000', width= 15, height = 2,command=study_time)
    push_button1.place(x = 300, y = 250)
    
    root.mainloop()
    
[/code]


CC BY-SA 4.0
2022-04-12T00:37:36.543
88280
2022-04-13T02:02:20.520
2022-04-13T00:50:53.917
52185
52185
question
python python3 tkinter
tkinterのプルダウンリストのフォントサイズが変更できない


[`tkinter.font.Font`](https://docs.python.org/3/library/tkinter.font.html)を変数として作成する時に、引数の`root`を指定しないと親コントロールがない状態となります。  
そのため、 **関数終了時に不要なローカル変数として破棄** されてしまいます。

文字サイズ指定のコードを下記のように書き換えて親コントロールを指定することでフォントサイズが維持されます。

[code]

        ###コンボボックスのリストの文字サイズ指定###
        # font = Font("", size=22) # 修正前
        font = Font(root=study_root, size=22) # 修正後
    
[/code]

参考情報： [Python3 Tkinter クラス化で分からない部分がある](https://teratail.com/questions/248042)


CC BY-SA 4.0
2022-04-13T02:02:20.520
88310
2022-04-13T02:02:20.520
9820
88280
answer