投稿者:ten 投稿日:2023/05/20(Sat) 16:56:41 No.2840
ToDoのやることリストや、ゲームのアイテムリストをカード表示(?)のような形でやりたいのですが。
予め必要分のGUI部品(ラベルを使用)を配列として変数に入れたところ、そこまでは、上手く行きました。また、この配列データにアクセスして背景色等の変更も上手く行きました(例:表示ラベルリスト(4)の背景色を「水色」にする、等)。
ただ、マウスイベントの取得で詰まっています。通常は、
○○のマウスカーソルが入った時の手順
○○の背景色を「水色」にする
終わり
といった形になるかと思いますが、この場合、「○○」部分に、名前が必要になります。この方法だと、全てのラベルについて、名前を用意し、手順を用意することになりますし、ラベルの増減に対応しにくくなります。
もし、まとめて処理できる方法があるのであれば、お教え下さい。ないようであれば、最大数を用意して名前を用意するか、座標を取得することでなんとかしたいと思っています。
分かりにくくて申し訳ありません。例えばPythonで、
for button in buttons:
button.bind("<Enter>", lambda event, button=button: on_enter(event, button))
というような形でfor文で設定するような、こういう類いのやり方でできないだろうか、と・・・
投稿者:アーク 投稿日:2023/05/21(Sun) 08:23:34 No.2841
ten さん、こんにちは。アークです。
プログラム掲示板の https://rdr.utopiat.net/cgi/progbbs/forump.php?mode=view&id=41 が参考になると思います。
投稿者:ten 投稿日:2023/05/21(Sun) 12:46:37 No.2843
ありがとうございます。説明が分かりにくくて申し訳ありません。この「ボタン1がクリックされた」「ボタン2がクリックされた」・・・というここをもう一段階柔軟かつ簡略にしたい、ということなのです。
たとえば、下記は、ラベルをループを用いて表示し、ラベル自体を変数に突っ込んでいます。必要なラベルの個数が変わる場合、この方法で柔軟に対応できますが、他方、ひとつひとつの名前がありません(ただし、「表示オブジェリスト」に入っているので、個々の表示を変える等の処理は、可能です)
---
max回繰り返す
窓に表示用というラベルを作る
その位置と大きさは、{100,10+labelY*n+labelinterval*n,labelX,labelY}
その内容をやること内容リスト(n+1)に変える
その背景色を白に変える
n=n+1
表示オブジェリスト(n)=表示用
繰り返し終わり
---
できれば、この「変数に入った状態」を活用して、「ボタン1の時」「ボタン2の時」と書かずにマウスイベントを設定できたらいいなあ、と・・・
駄目な場合は、座標で検出して分岐させるか、名前を設定して地道にやるかしようと思っています(キャンバス図形を使って、背後に表に出ないキャンバスを置いて色判定する方法もできそうかなあ、とは思いますが、この場合、メモリを食う&少し重くなるような気もします)
投稿者:ten 投稿日:2023/05/21(Sun) 19:02:08 No.2844
ツイッターの方で騒いでいたら、プロデルさんが教えて下さいました。
https://twitter.com/jpl_produire/status/1660185848925786112
今すぐには、ちょっと上手く理解しきれていませんが、思うことができそうです。アークさんが教えて下さったものと併せて、少し試行錯誤してみたいと思います。
アークさん、プロデル公式さん、ありがとうございました!
投稿者:ten 投稿日:2023/05/21(Sun) 21:18:16 No.2846
教えていただいたことを応用して、目的を達成したので、同じようなことではまる方がいらした場合のため、どう解決したか、ここに投稿しておきます。
//呼び出し元:
ラベル一覧は、{ラベル1,ラベル2,ラベル3}
ラベル一覧をあるラベルにそれぞれ繰り返す
あるラベルのマウスカーソルが入った時の手順は、マウスカーソルが入った
あるラベルのマウスカーソルが離れた時の手順は、ラベルのマウスカーソルが離れた
繰り返し終わり
//呼び出される手順側
ラベルのマウスカーソルが入った時の手順
発生元の背景色を「水色」にする
終わり
ラベルのマウスカーソルが離れた時の手順
発生元の背景色を「白色」にする
終わり
こういう形で設定することで、並んだ部品に対して、一括でイベント設定ができます。部品がたくさんある時は、すごく便利。
- WebForum -