前提・実現したいこと
ドラッグ&ドロップしたファイルのパスをボタンを押したら表示できるようにしたいです。
該当のソースコード
python
1import tkinter as tk 2from tkinter import ttk 3from tkinterdnd2 import * 4import os 5from natsort import natsorted # 自然数でソート 6 7def drop(event): 8 path_str = event.data.split(" ") 9 return path_str 10 11def make(str): 12 print(str) 13 text.set(str) 14 15# メインウィンドウの生成 16root = TkinterDnD.Tk() 17root.title('Entryにドラッグアンドドロップ機能追加') 18root.geometry('500x150') 19 20# メインフレームの作成 21frame = ttk.Frame(root) 22frame.pack(fill = tk.BOTH, padx=0, pady=0) 23 24# text変数の設定 25text = tk.StringVar(frame) 26text.set("ファイルをドロップしてください") 27 28# Lavelウィジェットの生成 29label = ttk.Label(root, textvariable=text) 30 31#Canvasウィジェットの作成 32canvas = tk.Canvas(frame,height = 50, width = 500) 33canvas.drop_target_register(DND_FILES) 34path_str = canvas.dnd_bind('<<Drop>>', drop) 35 36# ボタンウィジェットの作成 37button = tk.Button(root,text = "表示",command=lambda: make(path_str)) 38 39# ウィジェットの配置 40label.pack(padx=10) 41canvas.pack() 42button.pack() 43 44root.mainloop()
試したこと
ドラッグ&ドロップをしてevent.dataでパスを取得するすることができるので、それをpath_str変数に代入することでtk.buttonでも使えると思いました。
tk.buttonのcommandはそのままだと引数が使えないので、lambdaを使って引数を使えるようにしています。
でも、path_strに代入された文字が140666106173632dropというよくわからない文字になり困っています。
ここに問題に対して試したことを記載してください。
macOS Big Sur 11.2.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/13 05:31