2017-04-05 2 views
0

ライン/ポイントがマウスオーバーしたときに追跡できるようにしたいと考えている多くのラインとポイントが可能です。それを行うための短いコード可能な方法がありますか、何百/何千もの異なる要素名が出てきます。私は唯一のtkinterのキャンバスライン/ポイントのリストを作成する

self.z[0].canvas.create_line() 
self.z[1].canvas.create_line() 

など

self.z(0).canvas.create_line() 
self.z(1).canvas.create_line() 

を試してみた

は、あなたがその愚かな操作を行うことができない別名Zのようなものは、整数であることができないというエラーを取り戻します:)

いいえforループを設定してライン/ポイントを作成して、それらが作成された後でテストすることができるようにしてください。私はそれらをテストすることができるようにポイントをテストすることができますが、私はライン/ポイントを作成するより簡単な方法が欲しいです。

最悪のシナリオは

self.z1.canvas 
self.z2.canvas 
self.z3.canvas 

のようなものを設定する方法がありますが、1,2,3それぞれがためのループを増やすことができるように持っていますか?私は、私が言いたいことのように何かを見たことがあるかどうか分からない。

+0

あなたの質問は私にはあまり明確ではないので、1つのキャンバスに複数の行を作成したいのですか?複数のキャンバスがありますか?なぜあなたはリスト 'z'の要素から' canvas'属性を取得しようとしていますか? – TrakJohnson

+0

1つのキャンバスに多数のライン/ポイントがあり、ライン/ポイントを横切ってマウスをスクロールするたびに、ライン/ポイント上に情報シートを表示することができます。私は線のスクロールを検出してそれを使用することができますが、私は線/点の命名の状況を考えると簡単な方法を見つけようとしています。私はline1、line2、line3などのような簡単なものを使うことができるようにしたいと思います。前の行[1]、line [2]、line [3]を試してみました。 。すべての行データはcsvファイルに入っているので、簡単に作成できますが、名前付き行の作成は難しいようです。 – confused

答えて

1

アイテムをキャンバスに作成するたびに、一意のIDが返されます。そのIDをリストに格納することができます。

self.lines = [] 
for x in range(1000): 
    item = self.canvas.create_line(...) 
    self.lines.append(item) 

言われているように、私はあなたが "私がライン/ポイントがマウスオーバーされた時を追跡する"という配列にこれらを保持する必要はありません。そのためのバインディングを設定することができます。

+0

私は一意のIDを追加しようとする考えを考えていませんでした。私はまだこれを実際にショートカットできるかもしれないように見えます。 – confused

関連する問題