あるケミストの独り言(winchemwinの日記)

ケミスト(化学者)の視点で、面白そうな情報(シミュレーション関係など)を発信

分子軌道情報(HOMO/LUMO)自動算出アプリ(CustumTkinter) その5

 前回に引き続きCustumTkinterを利用した軌道情報の自動計算アプリの紹介です。
今回はCustumTkinter関連のコードの設定コードの紹介です。CustumTkinterですが、tkinterと比べてある程度デザイン性に優れた画面を作成することが可能です。画面のモードの設定ですが、set_appearance_modeで設定することができ、'dark'と'light'モードが設定できるようです。lightモードの場合は従来のtkinterに近いイメージとなるかと思います。あと今回のコードでは設定していませんが、set_default_color_themeで色味の設定も行なえます(’bule(default), dark-blue, green)。

 画面の設定ですが、従来のtkinterと同様にtitleとgeometryを設定して、設置することができます。 
 続いて、表示用のLabel, 入力用のButton, ConboBox などを設置してゆきますが、この辺のウィジェットtkinterと同様のコードで設定可能です。ただしウィジェットによって色味の設定も可能でfg_color(テキストの背景の色)、border_color(境界線の色)などの設定も適宜行っています。

 画面の構成ですが、smiles情報を有するファイルの選択、量子化学計算の条件設定、表示させる軌道レベル数からなっており、今回は量子化学計算の基本条件設定までのコードを紹介しています。

# Custon Tkinter main 

ctk.set_appearance_mode('dark')
# global root
root = ctk.CTk()
root.title("HOMO-LUMO List Calculator") 
root.geometry('700x450')

# Select main molecule file
Label1=ctk.CTkLabel(master=root, fg_color='blue',corner_radius=10, text='Smiles File Select',font=("Arial",16,"bold","italic"))
Label1.place(x=20, y=20)

filename_sv = tk.StringVar()
filenameEntry = ctk.CTkEntry(master=root, width=500,  textvariable=filename_sv)
filenameEntry.place(x=20, y= 50)

Button1 = ctk.CTkButton(master=root, text='Select',width=30,font=("Times",14,"bold"))
Button1.bind("<Button-1>", data_import) 
Button1.place(x=600, y=50)



# Calculation Run
Button2_3=ctk.CTkButton(master=root, text='Quantum Calculation Start',width=50, font=("Times",14,"bold"))
Button2_3.bind("<Button-1>", start_calc_button) 
Button2_3.place(x=70, y=330)


# Select calculation methods
Label3=ctk.CTkLabel(master=root, fg_color='blue',corner_radius=10, text='Quantum Calculation Method', font=("Arial",16,"bold","italic"))
Label3.place(x=20, y=100)

Label3_1=ctk.CTkLabel(master=root, text='Method',font=("Times",12))
Label3_1.place(x=70, y=140)
method_sv = tk.StringVar()
methods=('HF','DFT', 'MP2')
comboBox3_1=ctk.CTkComboBox(master=root, height=5, width=80, border_color='blue',state='readonly', values=methods, variable=method_sv)
comboBox3_1.place(x=70, y=160)

Label3_2=ctk.CTkLabel(master=root, text='Function',font=("Times",12))
Label3_2.place(x=170, y=140)
function_sv = tk.StringVar()
functions=('','b3lyp','cam-b3lyp', 'edf2','m06', 'pbe','wb97x-d')
comboBox3_2=ctk.CTkComboBox(master=root, height=5, width=80, border_color='blue',state='readonly', values=functions, variable=function_sv)
comboBox3_2.place(x=170, y=160)

Label3_3=ctk.CTkLabel(master=root, text='Basis set',font=("Times",12))
Label3_3.place(x=270, y=140)
baseset_sv = tk.StringVar()

base_sets=('3-21g','6-31g', '6-31g(d)','6-311g', 'aug-cc-pvtz')
comboBox3_3=ctk.CTkComboBox(master=root, height=5, width=80,border_color='blue', state='readonly', values=base_sets, variable=baseset_sv)
comboBox3_3.place(x=270, y=160)

 今回は以上になります。次回は残りのCustumTkinterのコードについての紹介をしたいと思います。