4

グラフィックユーザーインターフェイスのプログラミングとTkinter一緒に使用しています。Python 2.62.7

これらのユーザー インターフェイスには、ファイルを開き、tkFileDialogモジュールからデータを保存するためのダイアログが含まれています。ダイアログを調整し、ユーザーがコメントを残せるようにするなど、さらにいくつかのエントリ ウィジェットを追加したいと考えています。

そうする方法はありますか?

ファイル ダイアログは、オペレーティング システムから直接取得されているようです。これらTkinterはモジュール内の Dialog クラスから派生し、フレーム ウィジェットtkCommonDialogのメソッドを呼び出しtk.call("tk_getSaveFile")ます (この場合はデータを保存するため)。

このメソッドが定義されている場所を見つけることができませんでした。

4

2 に答える 2

4

callメソッドは で定義されて_tkinter.cいますが、特定のタスクにとって興味深いものは何もありません。Tcl コマンドを呼び出すだけで、そのコマンドtk_getSaveFileがすべての作業を実行します。

はい、オペレーティング システムにネイティブ ファイル ダイアログがある場合tk_getSaveFile、それらを使用します (たとえばGetSaveFileName、Windows で使用されます)。そこにウィジェットを追加することは可能かもしれませんが、Tk の C ソースを改ざんしないわけにはいきません。ターゲットが非ネイティブの Tk ダイアログを使用していることが確実な場合は、Tk から手順をハッキングしてウィジェット階層に何かを追加できます(::tk::dialog::file::参考文献」を参照library/tkfbox.tcl)。

むしろ、純粋な Tcl/Tk で記述され、OS 機能を使用しないtk_getSaveFile の代替実装を使用したいと思います。このようにして、そのレイアウトがすべての OS で同じであることを確認でき、Tk の新しいバージョンで突然変更されることはありません。Python に便利な API を提供することはまだ簡単ではありませんが、少なくとも可能です。

于 2013-02-04T12:47:00.210 に答える
1

canvasx/y ステートメントを削除する必要がありました。その行はset item [$data(canvas) find closest $x $y]、うまく機能するようになりました。$data(canvas) canvasx $xそれ自体はうまく機能しますが、 との関連でfind closestはなく、2行で記述されている場合も同様です。

于 2013-02-11T23:05:32.470 に答える