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

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

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

Tclは、インタープリタ型のプログラミング言語。リスト処理や連想配列といった特長を持ち、文法もシンプルです。拡張や他言語への組み込みが簡単にでき、アプリケーション拡張にための組み込み言語として用いられます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

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

ドラッグ&ドロップ

コンピューターのGUIにおいて、バーチャルなものを「つかむ」ことによって選択し、別の場所や他のバーチャルなものの上に動かす行為、またはその行為に対応していることを指す。

Python

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

Q&A

解決済

1回答

9448閲覧

TkinterDND2でttkウィジェットにファイルやテキストをドロップできない。

Marusoftware

総合スコア189

Tcl

Tclは、インタープリタ型のプログラミング言語。リスト処理や連想配列といった特長を持ち、文法もシンプルです。拡張や他言語への組み込みが簡単にでき、アプリケーション拡張にための組み込み言語として用いられます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

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

ドラッグ&ドロップ

コンピューターのGUIにおいて、バーチャルなものを「つかむ」ことによって選択し、別の場所や他のバーチャルなものの上に動かす行為、またはその行為に対応していることを指す。

Python

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

1グッド

0クリップ

投稿2020/07/17 14:27

編集2020/07/23 09:46

前提・実現したいこと

環境:
OS:Linux Mint 20
Python:3.8
Tk&Tcl:8.6
TkDND:2.6

発生している問題・エラーメッセージ

tkinterの通常ウィジェットにはドロップできるのですが、
ttkのウィジェットにドロップできません。

該当のソースコード

以下のようなファイル配置です:

/ |-tkdnd.py |-dnd_test_tkinter.py --dnd_test_ttk.py

tkdnd.py(こちらで配布されている最新版の改変版(のコメント削除版))

python3

1# -*- coding: utf-8 -*- 2 3try: 4 import Tkinter as tkinter 5 import Tix as tix 6 import ttk 7except ImportError: 8 import tkinter 9 from tkinter import tix 10 from tkinter import ttk 11import os 12TkdndVersion = None 13# dnd actions 14PRIVATE = 'private' 15NONE = 'none' 16ASK = 'ask' 17COPY = 'copy' 18MOVE = 'move' 19LINK = 'link' 20REFUSE_DROP = 'refuse_drop' 21# dnd types 22DND_TEXT = 'DND_Text' 23DND_FILES = 'DND_Files' 24DND_ALL = '*' 25CF_UNICODETEXT = 'CF_UNICODETEXT' 26CF_TEXT = 'CF_TEXT' 27CF_HDROP = 'CF_HDROP' 28FileGroupDescriptor = 'FileGroupDescriptor - FileContents'# ?? 29FileGroupDescriptorW = 'FileGroupDescriptorW - FileContents'# ?? 30 31def _require(tkroot): 32 '''Internal function.''' 33 global TkdndVersion 34 tkdndlib = os.environ.get('TKDND_LIBRARY') 35 if tkdndlib != "__null__": 36 if tkdndlib: 37 tkroot.tk.eval('global auto_path; lappend auto_path {%s}' % tkdndlib) 38 try: 39 TkdndVersion = tkroot.tk.call('package', 'require', 'tkdnd') 40 except tkinter.TclError: 41 raise RuntimeError('Unable to load tkdnd library.') 42 return TkdndVersion 43 44class DnDEvent: 45 pass 46 47class DnDWrapper: 48 _subst_format_dnd = ('%A', '%a', '%b', '%C', '%c', '{%CST}', 49 '{%CTT}', '%D', '%e', '{%L}', '{%m}', '{%ST}', 50 '%T', '{%t}', '{%TT}', '%W', '%X', '%Y') 51 _subst_format_str_dnd = " ".join(_subst_format_dnd) 52 tkinter.BaseWidget._subst_format_dnd = _subst_format_dnd 53 tkinter.BaseWidget._subst_format_str_dnd = _subst_format_str_dnd 54 55 def _substitute_dnd(self, *args): 56 if len(args) != len(self._subst_format_dnd): 57 return args 58 def getint_event(s): 59 try: 60 return int(s) 61 except ValueError: 62 return s 63 def splitlist_event(s): 64 try: 65 return self.tk.splitlist(s) 66 except ValueError: 67 return s 68 69 A, a, b, C, c, CST, CTT, D, e, L, m, ST, T, t, TT, W, X, Y = args 70 ev = DnDEvent() 71 ev.action = A 72 ev.actions = splitlist_event(a) 73 ev.button = getint_event(b) 74 ev.code = C 75 ev.codes = splitlist_event(c) 76 ev.commonsourcetypes = splitlist_event(CST) 77 ev.commontargettypes = splitlist_event(CTT) 78 ev.data = D 79 ev.name = e 80 ev.types = splitlist_event(L) 81 ev.modifiers = splitlist_event(m) 82 ev.supportedsourcetypes = splitlist_event(ST) 83 ev.sourcetypes = splitlist_event(t) 84 ev.type = T 85 ev.supportedtargettypes = splitlist_event(TT) 86 try: 87 ev.widget = self.nametowidget(W) 88 except KeyError: 89 ev.widget = W 90 ev.x_root = getint_event(X) 91 ev.y_root = getint_event(Y) 92 return (ev,) 93 tkinter.BaseWidget._substitute_dnd = _substitute_dnd 94 95 def _dnd_bind(self, what, sequence, func, add, needcleanup=True): 96 if isinstance(func, str): 97 self.tk.call(what + (sequence, func)) 98 elif func: 99 funcid = self._register(func, self._substitute_dnd, needcleanup) 100 # FIXME: why doesn't the "return 'break'" mechanism work here?? 101 #cmd = ('%sif {"[%s %s]" == "break"} break\n' % (add and '+' or '', 102 # funcid, self._subst_format_str_dnd)) 103 cmd = '%s%s %s' %(add and '+' or '', funcid, 104 self._subst_format_str_dnd) 105 self.tk.call(what + (sequence, cmd)) 106 return funcid 107 elif sequence: 108 return self.tk.call(what + (sequence,)) 109 else: 110 return self.tk.splitlist(self.tk.call(what)) 111 tkinter.BaseWidget._dnd_bind = _dnd_bind 112 113 def dnd_bind(self, sequence=None, func=None, add=None): 114 return self._dnd_bind(('bind', self._w), sequence, func, add) 115 tkinter.BaseWidget.dnd_bind = dnd_bind 116 117 def drag_source_register(self, button=None, *dndtypes): 118 if button is None: 119 button = 1 120 else: 121 try: 122 button = int(button) 123 except ValueError: 124 # no button defined, button is actually 125 # something like DND_TEXT 126 dndtypes = (button,) + dndtypes 127 button = 1 128 self.tk.call( 129 'tkdnd::drag_source', 'register', self._w, dndtypes, button) 130 tkinter.BaseWidget.drag_source_register = drag_source_register 131 132 def drag_source_unregister(self): 133 self.tk.call('tkdnd::drag_source', 'unregister', self._w) 134 tkinter.BaseWidget.drag_source_unregister = drag_source_unregister 135 136 def drop_target_register(self, *dndtypes): 137 self.tk.call('tkdnd::drop_target', 'register', self._w, dndtypes) 138 tkinter.BaseWidget.drop_target_register = drop_target_register 139 140 def drop_target_unregister(self): 141 self.tk.call('tkdnd::drop_target', 'unregister', self._w) 142 tkinter.BaseWidget.drop_target_unregister = drop_target_unregister 143 144 def platform_independent_types(self, *dndtypes): 145 return self.tk.split(self.tk.call( 146 'tkdnd::platform_independent_types', dndtypes)) 147 tkinter.BaseWidget.platform_independent_types = platform_independent_types 148 149 def platform_specific_types(self, *dndtypes): 150 return self.tk.split(self.tk.call( 151 'tkdnd::platform_specific_types', dndtypes)) 152 tkinter.BaseWidget.platform_specific_types = platform_specific_types 153 154 def get_dropfile_tempdir(self): 155 return self.tk.call('tkdnd::GetDropFileTempDirectory') 156 tkinter.BaseWidget.get_dropfile_tempdir = get_dropfile_tempdir 157 158 def set_dropfile_tempdir(self, tempdir): 159 self.tk.call('tkdnd::SetDropFileTempDirectory', tempdir) 160 tkinter.BaseWidget.set_dropfile_tempdir = set_dropfile_tempdir 161 162class Tk(tkinter.Tk, DnDWrapper): 163 def __init__(self, *args, **kw): 164 tkinter.Tk.__init__(self, *args, **kw) 165 self.TkdndVersion = _require(self) 166 167class TixTk(tix.Tk, DnDWrapper): 168 def __init__(self, *args, **kw): 169 tix.Tk.__init__(self, *args, **kw) 170 self.TkdndVersion = _require(self)

ttkバージョン(dnd_test_ttk.py - 今回問題が発生しているものです。)

python3

1from tkdnd import * 2from tkinter import ttk 3 4root = Tk()#ウィンドウ 5 6frame = ttk.Frame(root, width=100, height=100)#ドロップされるフレーム 7frame.pack(fill="both",expand=True) 8 9frame.drop_target_register(DND_FILES, DND_TEXT)#対応させるドロップフォーマット 10frame.dnd_bind('<<Drop>>', lambda event:print(event.data))#イベントのバインド 11 12root.mainloop()

tkinterバージョン(dnd_test_tkinter.py)

python3

1from tkinter import * 2import tkinter 3 4root = Tk()#ウィンドウ 5 6frame = tkinter.Frame(root, width=100, height=100)#ドロップされるフレーム 7frame.pack(fill="both",expand=True) 8 9frame.drop_target_register(DND_FILES, DND_TEXT)#対応させるドロップフォーマット 10frame.dnd_bind('<<Drop>>', lambda event:print(event.data))#イベントのバインド 11 12root.mainloop()

試したこと

順序の入れ替えなど

teamikl👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

環境: win10/64 python3.7 TkDnD2.8
同環境ではありませんが、類似する症状を確認。

ファイルはドロップできないけどテキストは可能だったりしませんか?

上記の tkdnd.py を使うとどちらのコードもファイルのドロップは出来ず、
公式?(リンク先からダウンロード) の TkinterDnD2 では、ttk でも利用できました。

差分を確認すると、tkdnd.py には 引数 ttk が追加されてました。

def drop_target_register(self, ttk=0, *dndtypes):

原因: DND_FILES が ttk 引数に入ってしまい、dndtypes に渡っていない。

DND_TEXT は有効そうなので、テキストのドロップは出来ました。


※ 但し、dnd_test_ttk.py だけでドロップ出来ないという現象は、上記のコードからは確認できません。
双方のテストをした時に、ファイルとテキストで異なっていた可能性はないでしょうか。

DND_FILES, DND_TEXT はこのコードでは未定義の変数でエラーになるはずですが、
他に、投稿の際に編集したということはありませんか?


追記: ttk.Notebook でのドロップ確認用のコード

※ drop_target_registerのttk=0 の部分に True を渡しています。ここはtkdnd.py側で修正済であれば適宜対処。

python

1#!/usr/bin/env python3.7 2 3import sys 4from tkinter import * 5from tkinter import ttk 6 7import tkdnd 8 9def drop(event): 10 print(event.data) 11 12root = tkdnd.Tk() 13root.geometry("400x400") 14 15note = ttk.Notebook(root) 16note.drop_target_register(True, tkdnd.DND_FILES) # XXX 17note.dnd_bind('<<Drop>>', drop) 18note.pack(fill=BOTH, expand=True) 19 20frame = ttk.Frame(note) 21note.add(frame, text="Page1") 22 23button = ttk.Button(note, text="OK") 24note.add(button, text="Page1") 25 26root.mainloop()

投稿2020/07/17 18:57

編集2020/07/18 11:48
teamikl

総合スコア8664

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

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

Marusoftware

2020/07/18 06:04 編集

回答ありがとうございます。 投稿用に色々と編集していたため、ご指摘の箇所を修正いたしました。 すると、動作するようになりました。 ありがとうございます。 しかし、ttk.NoteBook内ではドロップできません。 ご教示いただければ幸いです。
teamikl

2020/07/18 11:28

ttk.Notebook でもドロップ出来ました。 簡単なケースでしか試してませんが、tkdnd.py と TkinterDnD2 両方で 空のNotebookの場合、ttk.Frame や ttk.Button の場合でドロップが動作することを確認しました。 ## 確認事項 tkdnd.py をプロジェクト内で独自に保守されるなら、 drop_target_register関数内で dndtypes が正常にわたっているかどうかを確認 print("DropTarget:", dndtypes) ---- 環境を揃えたほうが良いかなと思い始めましたが、 同じコードで挙動が違う事があれば検討しますね。 VirtualBox 上の Mint になります。
Marusoftware

2020/07/19 16:37 編集

回答ありがとうございます。 print(dndtypes)を追加したところ、 ('DND_Files',)と返ってきます。 これは正常ですか? 文字列ではなく、タプルが返ってきている気がするのですが... ちなみに、Notebookを使用した例ですが、以下のようなソースコードです。 ``` from tkdnd import * from tkinter import ttk root = Tk() root.note = ttk.Notebook(root) root.note.pack(fill="both",expand=True) root.note.frame = ttk.Frame(root.note,height=100,width=100) root.note.frame.pack(fill="both",expand=True) root.note.add(root.note.frame) root.note.frame.drop_target_register(DND_FILES) root.note.frame.dnd_bind('<<Drop>>', lambda event:print(event.data)) root.mainloop() ``` 度々すみませんがよろしくお願いします。
teamikl

2020/07/20 00:14 編集

取り急ぎ動作報告ですが、ttk=0 の問題は解消してるとして py3.7,3.8 win10 では動作しました。※ 但し tkDnD は 2.8 ('DND_Files',) ここの引数は *dndtypes とタプルで受けているので、正常です。 補足: tkdnd.tcl のproc ::tkdnd::drop_target関数内で puts [join $types ","] とするとTCL側でも可変長引数のリストに渡ってきているのが確認できます。 ここから先はプラットフォーム依存の処理に分岐。 環境構築に当たり一つ質問、tkDNDはどのような経路でどのパッケージをインストールされました? 今調べると、sf.net のv2.6 は 2012年頃 v2.8/2015年 最新版は github で v2.9/2019年でした。 --- バイナリ配布に関して Are you planning release binaries like old sourceforge? https://github.com/petasis/tkdnd/issues/24 訂正: 現状は github のみ。 https://github.com/petasis/tkdnd/releases https://github.com/petasis/tkdnd/blob/master/Changelog によると、 バージョン付きの最新は v2.9.2 でした (2020/07/20時点) バグ修正等も多数あるようなので、 可能ならば tkDnD をアップデートし試してみてはどうでしょう?
Marusoftware

2020/07/20 14:50

回答ありがとうございます。 動作報告対象は前回のコメントのものでしょうか? わざわざ動作確認ありがとうございます。 諸事情によりWindows環境の実行に若干の手間がかかるものでして...大変助かります。 tkdndはDebian Aptパッケージマネージャ版です。 次のコマンドでインストールしました。 sudo apt install tkdnd インストール時にエラーは発生していません。 (使用している環境はLinux Mint 20なので、Ubuntu Focalのパッケージと同一のものです。) https://packages.ubuntu.com/focal/tkdnd こちらは、バージョンが2.6となっているようです。 githubのtkdnd最新版、ありがとうございます。 ただ、実は、このTkDnDを使用する(予定)のアプリケーションをマルチプラットフォーム向けに配布する予定もあり、ソースコードからのビルドに若干消極的なのが現実です。(githubの方にバイナリパッケージはなかった) とはいっても、バグ修正等により問題が解決されるのであれば、最適な解決方法であると考えられますので、なんとか試してみます。 結果はなるべく早めに報告いたします。 今後もお力添えいただければ幸いです。 よろしくお願いします。
teamikl

2020/07/21 05:43 編集

>動作報告対象は前回のコメントのものでしょうか? はい、ひとつ前のコメントの動作報告です。 >githubの方にバイナリパッケージはなかった x64のみですが、release ページにあります。 2.6は windows用バイナリがありませんでした。 virtual box 上 linuxmint-20-cinnamon にて python3.8.2 apt でインストールした tkdnd で問題を再現出来ました。 原因自体は調べてません。動作報告のみですが、 https://github.com/petasis/tkdnd/releases にある tkdnd-2.9.2-linux-x64.tgz で動作確認出来ました。 2.9.2のライブラリはインストールせずに、環境変数 TKDND_LIBRARYを設定して読込。 tkdnd.py は一カ所 master.tk.call -> tkroot.tk.call に修正。 因みに、tkdnd v2.6 でも ttk.Notebook上のttk.Frameではなく、 ttk.Notebook に bind するとファイルのドロップは可能でした。
Marusoftware

2020/07/23 11:45 編集

回答ありがとうございます。 説明不足ですみません。 私の言うところの、"ttk.Notebookにドロップ"とは以下のソースコードのようなものです。 ``` from tkdnd import * from tkinter import ttk import os os.environ['TKDND_LIBRARY'] = os.path.abspath("./tkdnd") root = Tk() root.note = ttk.Notebook(root) root.note.pack(fill="both",expand=True) root.note.frame = ttk.Frame(root.note,height=100,width=100) root.note.frame.pack(fill="both",expand=True) root.note.add(root.note.frame) root.note.frame.drop_target_register(DND_FILES) root.note.frame.dnd_bind('<<Drop>>', lambda event:print(event.data)) root.mainloop() ``` どうやら、バグ("https://sourceforge.net/p/tkdnd/bugs/27/")がaptからインストールできるtkdnd2.6では修正されていないようです。 また、こちらでも、tkdnd2.8以降であれば、問題なくドロップできることが確認できました。(2.9.2も確認できました!) 2.9.2に関しては、ソースコード内のtcl-configを ``` #!/bin/sh # The next line is executed by /bin/sh, but not tcl \ exec tclsh "$0" ${1+"$@"} set srcdir [file dirname [file normalize [info script]]] puts "TkDND sources: $srcdir" set libpath /usr/lib/ set root /usr/include/tk/ set tcl_includepath $root set tk_includepath $root set tcl_libpath $libpath set tk_libpath $libpath set tk_includepath_int $tk_includepath catch {file delete -force config.cache} # puts "ROOT: $root" catch { switch -nocase -- $::tcl_platform(os) { darwin { set sdk {} catch { set sdk [exec xcodebuild -version -sdk macosx Path] } foreach dir [list \ $root/Headers \ [string map {Tcl Tk} $root]/Headers \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tcl.framework/Versions/Current \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tcl.framework/Versions/Current/Headers \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tk.framework/Versions/Current \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tk.framework/Versions/Current/Headers \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tk.framework/Versions/Current/Headers/tk-private \ $sdk/System/Library/Frameworks/Tcl.framework/Versions/Current \ $sdk/System/Library/Frameworks/Tcl.framework/Versions/Current/Headers \ $sdk/System/Library/Frameworks/Tk.framework/Versions/Current \ $sdk/System/Library/Frameworks/Tk.framework/Versions/Current/Headers \ $sdk/System/Library/Frameworks/Tk.framework/Versions/Current/Headers/tk-private \ /System/Library/Frameworks/Tcl.framework \ /System/Library/Frameworks/Tk.framework \ ] { if {[file exists $dir/tclConfig.sh]} {set tcl_libpath $dir} if {[file exists $dir/tkConfig.sh]} {set tk_libpath $dir} if {[file exists $dir/tcl.h]} {set tcl_includepath $dir} if {[file exists $dir/tk.h]} {set tk_includepath $dir} if {[file exists $dir/tkInt.h]} {set tk_includepath_int $dir} } } } } set bits --disable-64bit catch { switch $::tcl_platform(machine) { x86_64 - amd64 {set bits --enable-64bit} default {set bits --disable-64bit} } } ## Do we have Tcllib's fileutil? if {[catch {package require fileutil}]} { puts "Tcllib's package \"fileutil\" not found! Simulating..." ## From: http://wiki.tcl.tk/2042 proc rglob { dirpath patterns } { set rlist {} foreach fpath [glob -nocomplain -types f -directory ${dirpath} \ {*}${patterns}] { lappend rlist ${fpath} } foreach dir [glob -nocomplain -types d -directory ${dirpath} *] { lappend rlist {*}[rglob ${dir} ${patterns}] } return ${rlist} };# rglob proc find_file {path filename} { set found [rglob $path $filename] if {![llength $found]} { puts stderr "Cannot find file \"$filename\" within directory (and\ sub-directories) \"$path\"." exit 1 } lindex $found 0 };# find_file } else { puts "Tcllib's package \"fileutil\" found!" proc find_file {path filename} { set found [fileutil::findByPattern $path -glob -- $filename] if {![llength $found]} { puts stderr "Cannot find file \"$filename\" within directory (and\ sub-directories) \"$path\"." exit 2 } lindex $found 0 };# find_file } puts {} ## Ensure we can find tclConfig.sh & tkConfig.sh if {![file exists $tcl_libpath/tclConfig.sh]} { ## Ok, we are missing the configuration file. Can we find it? set tcl_libpath [file dirname [find_file $root tclConfig.sh]] } puts "Found \"tclConfig.sh\" in \"$tcl_libpath\"." if {![file exists $tk_libpath/tkConfig.sh]} { ## Ok, we are missing the configuration file. Can we find it? set tk_libpath [file dirname [find_file $root tkConfig.sh]] } puts "Found \"tkConfig.sh\" in \"$tk_libpath\"." ## Ensure we can find tclConfig.sh & tkConfig.sh if {![file exists $tcl_includepath/tcl.h]} { ## Ok, we are missing the configuration file. Can we find it? set tcl_includepath [file dirname [find_file $root tcl.h]] } puts "Found \"tcl.h\" in \"$tcl_includepath\"." if {![file exists $tk_includepath/tk.h]} { ## Ok, we are missing the configuration file. Can we find it? set tk_includepath [file dirname [find_file $root tk.h]] } puts "Found \"tk.h\" in \"$tk_includepath\"." puts {} if {$tk_includepath_int ne $tk_includepath} { puts "+++ Running 'bash configure -srcdir=$srcdir\n\ \ --prefix=$srcdir/cmake/runtime\n\ \ --exec-prefix=$srcdir/cmake/runtime\n\ \ --with-tcl=$tcl_libpath\n\ \ --with-tk=$tk_libpath\n\ \ --with-tclinclude=$tcl_includepath\n\ \ --with-tkinclude=$tk_includepath\n\ \ PKG_INCLUDES=-I\"$tk_includepath_int\"\n\ \ $bits'\n\ \ in directory [pwd]..." catch {exec bash configure -srcdir=$srcdir --prefix=$srcdir/cmake/runtime \ --exec-prefix=$srcdir/cmake/runtime \ --with-tcl=$tcl_libpath --with-tk=$tk_libpath \ --with-tclinclude=$tcl_includepath \ --with-tkinclude=$tk_includepath \ PKG_INCLUDES=-I"$tk_includepath_int" \ $bits >@stdout 2>@stderr} } else { puts "+++ Running 'bash configure -srcdir=$srcdir\n\ \ --prefix=$srcdir/cmake/runtime\n\ \ --exec-prefix=$srcdir/cmake/runtime\n\ \ --with-tcl=$tcl_libpath\n\ \ --with-tk=$tk_libpath\n\ \ --with-tclinclude=$tcl_includepath\n\ \ --with-tkinclude=$tk_includepath\n\ \ $bits'\n\ \ in directory [pwd]..." catch {exec bash configure -srcdir=$srcdir --prefix=$srcdir/cmake/runtime \ --exec-prefix=$srcdir/cmake/runtime \ --with-tcl=$tcl_libpath --with-tk=$tk_libpath \ --with-tclinclude=$tcl_includepath \ --with-tkinclude=$tk_includepath \ $bits >@stdout 2>@stderr} } exit 0 ``` と書き換えたところ、問題なくビルドできました。 おそらく、32bit版及びarm版のビルドも可能そうなので、試してみます。 長い間お付き合いいただきありがとうございました。 大変助かりました。 またお世話になることもあるかもしれませんが、その際もよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問