2019年2月22日金曜日

PyQT、オブジェクト名に変数を使う


軽くはまった( ´∀`)
pythonに移植中のClipGo、ホタンがたくさん並ぶが、全てを同じ関数にコネクトすることにした
何度もコネクトを書くわけにはいかないからループ処理にしたんだけどこれがうまくいかない

ui.pushButton_1.connect(hoge)
ってスクリプトの数字部分を変えたいんだけど、ここを変数にしてループを回すとエラーになる
uiはそんな変なオブジェクトは持ってないよ、みたいなね┐('д')┌

で、ネットで調べたらexecを使えばイケルけどそういうやり方は良くないらしく、辞書を使えば良いみたいなことが書いてある
辞書ってリストみたいなものだよな、よくわかんないな~と思いながらふと、tcl/tkならevalだなあと思いやってみたらいけた(^^)/
全部文字列で書いてからevalする

eval( 'ui.pushButton_' + 変数 + '.connect(hoge)' )

こんな感じね
調べたらexec()と似た使い方です
推奨はされないのかな?
とりあえずイケたけど辞書について調べておきたいです( ´∀`)

0 件のコメント:

コメントを投稿