tkinterにはToolBarのような、ツールバー用のウィジェットは無いのですが、ツールバーをFrameとButtonを使って作ります。
フレームにアイコン付きのボタンを左側に配置するだけですが。。
(作成したツールバーのイメージ)
- ファイルを開く
- フォルダを開く
- 保存
の3つのボタンを配置しています。
(ソースコード)
import tkinter as tk
from tkinter import filedialog
from PIL import ImageTk
class Application(tk.Frame):
def __init__(self, master = None):
super().__init__(master)
self.master.title("ToolBar") # ウィンドウタイトル
self.master.geometry("300x200") # ウィンドウサイズ(幅x高さ)
#---------------------------------------
# ツールバー
#---------------------------------------
# ツールバー用Frame
frame_toolbar = tk.Frame(self.master, bg = "gray90")
#-------------------------
# ボタン
# ファイルを開く
self.ico_open_file = ImageTk.PhotoImage(file = "OpenFile_16x.png")
btn_open_file = tk.Button(frame_toolbar, command = self.open_file_click, image = self.ico_open_file)
# フォルダを開く
self.ico_open_folder = ImageTk.PhotoImage(file = "OpenFolder_16x.png")
btn_open_folder = tk.Button(frame_toolbar, command = self.open_folder_click, image = self.ico_open_folder)
# 保存
self.ico_save = ImageTk.PhotoImage(file = "Save_16x.png")
btn_save = tk.Button(frame_toolbar, command = self.save_click, image = self.ico_save)
#-------------------------
# ボタンをフレームに配置
btn_open_file.pack(side = tk.LEFT, padx = (5, 0)) # 左側だけ隙間を空ける
btn_open_folder.pack(side = tk.LEFT)
btn_save.pack(side = tk.LEFT)
#-------------------------
# ツールバーをウィンドウに配置
frame_toolbar.pack(fill=tk.X)
#---------------------------------------
def open_file_click(self):
'''[ファイルを開く]がクリックされたとき'''
filename = filedialog.askopenfilename()
print(filename)
def open_folder_click(self):
'''[フォルダを開く]がクリックされたとき'''
dir_name = filedialog.askdirectory()
print(dir_name)
def save_click(self):
'''[保存]がクリックされたとき'''
filename = filedialog.asksaveasfilename()
print(filename)
if __name__ == "__main__":
root = tk.Tk()
app = Application(master = root)
app.mainloop()
アイコンファイルはマイクロソフトのVisual Studio Image Libraryより入手しました。
https://www.microsoft.com/en-us/download/details.aspx?id=35825