2016-05-08 13 views
0

基本的な質問が完了しましたら申し訳ありません。私はTkInterでビデオ・ライブラリーのGUIインターフェースを開発しようとしています(WPF/XAML、MVVMのパラダイム、html/cssのある程度の経験があります)。GUI:TkInterを使用した任意の要素の垂直リスト

私はカスタム要素のスクロール可能な水平リストを持っていたいと思います。各要素には、メタデータ(長さ、ビットレートなど)、画像(サムネイル)、アクションボタン(再生、削除、マークなど)などのビデオデータがあります。理想的には、私はまた、ビデオの順序を並べ替えるために、ハンドルをドラッグしたい。

私は探していますが、データとテンプレートにバインドするWPFの要素に相当するものを探しています。それはTkにも存在するのですか?それとも移植性の高いフレームワークのための野心的な要件ですか?

テンプレートがTkに存在しない場合でも、手動で親コントロールに手動で設定することができます(HTMLの要素に似ています - それぞれが多くのコントロールを持っています) - しかしイベントでは任意のウィジェットのリストを見つけることができませんでした。

双方向バインディングが存在しますか(アイテムをアイテムリストに追加するなど、UIを自動的に更新する必要がありますか)ですか?

Tkは正しい方向ですか?基本的なロジックはPythonにあるので、Pythonに優しいソリューションを探しています。 WPFを使用したIron Pythonは明らかな解決策ですが、移植性が高く、Iron Pythonの現在の状態はあまり有望ではなく、Iron Pythonでサポートされていないライブラリを使用しています。

+0

はあなたのコードを表示する、または任意しよう。 – Lemayzeur

+0

あなたのタイトルは縦リストを要求し、本文は横リストを要求します。 –

答えて

0

カスタム要素を作成する最も一般的な方法は、Frameをサブクラス化することです。あなたはそのフレーム(画像、ボタンなど)にあなたが望むものを置くことができます。そして、その全体を単一のGUI要素として扱うことができます。

import Tkinter as tk 
... 
class CustomElement(tk.Frame): 
    def __init__(self, parent, meta, image_file, ...): 
     tk.Frame.__init__(self, parent) 
     # <create widgets for image, metadata, etc here> 

次に、これらのアイテムのコンテナとして機能するカスタムウィジェットを作成できます。たとえば、キャンバスを使用すると、このオブジェクトを水平に整列しやすくなり、スクロールバーをアタッチすることができます。

最後に、tkinterには強力なイベント管理システムがあり、ドラッグアンドドロップで物事を移動することができます。組み込みのドラッグアンドドロップ自体はありませんが、独自のグラブハンドルやカスタムバインディングをクリックして作成して実装することができます。マウスを使ってキャンバスに物事を移動させる例については

、この回答を参照してください。https://stackoverflow.com/a/6789351/7432

関連する問題