質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

5376閲覧

TkInter: ドラッグ&ドロップを達成したく インターネットでの紹介記事を丸々貼り付けたがエラーになってしまう。

saya24

総合スコア247

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/12/09 06:15

編集2021/12/09 06:18

python

1 Message=no event type or button # or keysym

こちらの記事を参考に ドラッグ&ドロップを対応しようと 一部を参考に取り組んでおりましたが どうしても上記エラーを招いてしまう状況でした。

自分で試したこと

問題部分を特定できなかったので、抜粋して適用する手法をとりやめ、一度まるまるを貼り付けて 実行を試すことを行いました。
結果、textarea.configure(yscrollcommand=scroll.set) のコード部分から 上記エラーが発せられています。

自分の手元の開発環境は python3.6
紹介記事では python3.8.8との 記載ございますが やはりこれが問題なのでしょうか

問題をご教示頂けますと幸いです。TEXTウィジェットに適用するコードをまるっと自分の開発環境に貼り付けての確認です。

python

1from tkinter import * 2from tkinterdnd2 import * 3 4def text_view(event): 5 textarea.delete("1.0","end") 6 if event.data.endswith(".txt"): 7 with open(event.data, "r") as file: 8 for line in file: 9 line=line.strip() 10 textarea.insert("end",f"{line}\n") 11 12# メインウィンドウの生成 13root = TkinterDnD.Tk() 14root.title('テキストエディター') 15root.geometry('400x300') 16root.config(bg='#66ffff') 17# フレームウィジェットの生成 18frame = Frame(root) 19# テキストウィジェットの生成 20textarea = Text(frame, height=20, width=50) 21textarea.drop_target_register(DND_FILES) 22textarea.dnd_bind('<>', text_view) 23# スクロールバーの生成 24scroll = Scrollbar(frame, orient=VERTICAL) 25textarea.configure(yscrollcommand=scroll.set) 26scroll.config(command=textarea.yview) 27# ウィジェットの配置 28frame.pack() 29textarea.pack(side=LEFT) 30scroll.pack(side=RIGHT, fill=Y) 31 32ws.mainloop()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

python 3.6 で動作確認しました。

  • bind('<>', ...) は無効なイベントです。

 恐らくタグのエスケープがされてなくて HTMLのタグとして認識されてるのかも。
'<<Drop>>' としてください。

  • ws.mainloop() ws は未定義です。
  • event.data で得られる文字列は、Tcl の配列なので
    {c:\test\a.txt} といった文字列で得られます。

 そのまま ファイル名として open することは出来ないので注意。文字列の加工が必要です。
例: "{a.txt}".strip("{}") # => "a.txt"

投稿2021/12/09 10:41

teamikl

総合スコア8760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saya24

2021/12/09 10:44

teamilkさん、いつも有難うございます。試して後ほどご報告致します。 ネットの記事だけに そういうことがありうるのですね
saya24

2021/12/10 00:45

ご報告遅くなり申し訳ございませんでした。 全てのご見解を反映することで はじめて 紹介された記事が 正常に動作することを確認致しました。 最初から躓いてしまった状況を 至れり尽くせりの問題指摘でご支援頂き 本当に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問