2

ttk::treeview にチェックボックスを追加したかったのですか?

私はいくつかのドキュメントを読みましたが、ttk::treeview に追加するチェック ボックスを追加できないことがわかりました。これを行う他のオプションはありますか?

4

3 に答える 3

1

ツリービュー ウィジェットは、それを行うには十分に洗練されていません。多くの作業が必要です。(チェックされた線とチェックされていない線がどのように見えるかを定義するスタイルを実行し、バインディングを使用してそれらを切り替えることで、それに近似することができるかもしれません...しかし、それはかなり恐ろしく壊れやすいでしょう.) はい、これはあなたができることを意味します.それを使ってすべてを行う必要はありませんが、それによってウィジェットの API の学習がより簡単になります。これは常にトリッキーなデザインのトレードオフです。

あなたの最善の策はおそらくTkTreeCtrl です。これは、ツリー (またはテーブル、またはグリッド) ウィジェットでやりたいと思ったことは何でもできるという評判があります。これまで。私が理解しているように(ユーザーではありませんが)、使用するのはかなり難しいです。API を必要な特定の目的に制限するために、TkTreeCtrl を常に追加のコードでラップするように勧められていると聞いたことがあります。

于 2012-09-12T19:37:48.797 に答える
1

私は ttk:treeview のチェックボックスをバニラコードで使用していますが、最初の列で使用しています。

ツリービューの最初の列 ( #0 または "tree" と呼ばれる) では、ラベルの場合と同様にイメージ (icon_checked および icon_unchecked とします) を指定できます。

$win.tv item $item -image icon_checked

グラフィック部分については以上です。それほど汚れていない部分の場合:

  • ツリービューの各行のステータスを含むリストを作成します (例: "tvstatus" { 0 0 0 1 0})
  • リスト「tvstatus」に応じて各行を更新するプロシージャ「tv_refresh」を作成します
  • ツリービューにバインディングを作成します: 1 リスト "tvstatus" の 1 つの項目の値を変更します 2 "tv_refresh" を呼び出します

より具体的な回答を得るために、ユーザーに尋ねたいことを正確に伝えます。

于 2012-09-19T15:51:38.933 に答える
0

comp.lang.tcl で解決策を見つけました。https://groups.google.com/d/msg/comp.lang.tcl/VwG4_7-1538/MWzhZiVcoecJを参照

于 2014-02-02T19:31:54.877 に答える