diff --git a/waypoint_manager/scripts/icons/delete_param_btn.png b/waypoint_manager/scripts/icons/delete_param_btn.png new file mode 100644 index 0000000..86f4660 --- /dev/null +++ b/waypoint_manager/scripts/icons/delete_param_btn.png Binary files differ diff --git a/waypoint_manager/scripts/icons/new_param_btn.png b/waypoint_manager/scripts/icons/new_param_btn.png new file mode 100644 index 0000000..fdf4e36 --- /dev/null +++ b/waypoint_manager/scripts/icons/new_param_btn.png Binary files differ diff --git a/waypoint_manager/scripts/manager_GUI.py b/waypoint_manager/scripts/manager_GUI.py index cd38a8a..4f7ef9b 100755 --- a/waypoint_manager/scripts/manager_GUI.py +++ b/waypoint_manager/scripts/manager_GUI.py @@ -5,6 +5,7 @@ import gc from pathlib import Path from tkinter import messagebox +from PIL import Image, ImageTk from lib.mymaplib import MyMap from lib.waypointlib import WaypointList, FinishPose, get_waypoint_yaml @@ -94,13 +95,21 @@ self.master.bind("", self.ctrl_right_click) self.master.bind("", self.window_resize_callback) + #### アイコン #### + icon = Image.open(Path(__file__).parent / Path("icons","new_param_btn.png")) + icon = icon.resize((30, 30)) + self.new_param_icon = ImageTk.PhotoImage(image=icon) + icon = Image.open(Path(__file__).parent / Path("icons","delete_param_btn.png")) + icon = icon.resize((30, 30)) + self.del_param_icon = ImageTk.PhotoImage(image=icon) + #### その他必要になる変数 #### self.mymap = None self.waypoints = None self.finish_pose = None self.waypoints_filepath = None self.editing_waypoint_id = None # 編集中のウェイポイントを示す図形のオブジェクトID - self.moving_waypoint = False # ウェイポイントをDnDで動かしている最中かどうか + self.moving_waypoint = False # ウェイポイントをmoveで動かしている最中かどうか self.setting_finish_pose = 0 # finish pose のセット中かどうか self.old_click_point = None # 最後にカーソルのあった座標を保持 self.wp_info_win: tk.Toplevel = None # ウェイポイント情報を表示するウィンドウ @@ -594,22 +603,22 @@ txt_box = tk.Entry(self.wp_info_win, width=20, font=("Consolas", 15)) txt_box.insert(tk.END, str(point[key]).lower()) txt_box.grid(column=1, row=i, padx=2, pady=2, ipady=3, sticky=tk.EW) - del_btn = tk.Button(self.wp_info_win, text="-", width=2, bg="red", fg="white", font=("",13,"bold")) + del_btn = tk.Button(self.wp_info_win, image=self.del_param_icon, relief=tk.FLAT) del_btn["command"] = lambda name=key, val=str(point[key]).lower(): self.del_param_btn_callback(name, val) del_btn.grid(column=2, row=i, padx=5, pady=5) # New parameter - new_param_btn = tk.Button(self.wp_info_win, text="New Parameter", bg="#AFA") + new_param_btn = tk.Button(self.wp_info_win, image=self.new_param_icon, relief=tk.FLAT) new_param_btn["command"] = self.new_param_btn_callback - new_param_btn.grid(column=0, columnspan=2, row=self.wp_info_win.grid_size()[1], pady=10) - # Apply, DnD(Drag & Drop), remove ボタン + new_param_btn.grid(column=0, columnspan=3, row=self.wp_info_win.grid_size()[1], pady=10) + # Apply, Move(Drag & Drop), remove ボタン canv = tk.Canvas(self.wp_info_win) canv.grid(column=0, columnspan=3, row=self.wp_info_win.grid_size()[1], sticky=tk.EW, pady=5) apply_btn = tk.Button(canv, text="Apply", width=5, height=1, bg="#FDD", command=self.apply_btn_callback) apply_btn.pack(side=tk.RIGHT, anchor=tk.SE, padx=5, pady=5) - dnd_btn = tk.Button(canv, text="DnD", width=5, height=1, bg="#EEE") - dnd_btn["command"] = lambda obj=dnd_btn: self.dnd_btn_callback(dnd_btn) - dnd_btn.pack(side=tk.RIGHT, anchor=tk.SE, padx=5, pady=5) + move_btn = tk.Button(canv, text="Move", width=5, height=1, bg="#EEE") + move_btn["command"] = lambda obj=move_btn: self.move_btn_callback(move_btn) + move_btn.pack(side=tk.RIGHT, anchor=tk.SE, padx=5, pady=5) remove_btn = tk.Button(canv, text="Remove", width=7, height=1, bg="#F00", command=self.remove_btn_callback) remove_btn.pack(side=tk.LEFT, anchor=tk.SE, padx=5, pady=5) @@ -641,9 +650,9 @@ """ - +++++ ドラッグ&ドロップボタン(DnD)を押したときのコールバック +++++ + +++++ ドラッグ&ドロップボタン(move)を押したときのコールバック +++++ """ - def dnd_btn_callback(self, obj=None): + def move_btn_callback(self, obj=None): if obj is None: return btn = obj # 押された状態とそうでない状態を切り替える