- 締切済み
Perl/Tkで、Entryが上手く扱えません
GUIプログラミングを始めようと思い、Perlを少しかじっていることもあり、Perl/Tkを選びました。CentOS5にソース(Tk-804.027.tar.gz)からインストールを行い、オライリーの「入門Perl/Tk」に沿って勉強しています。 順調に各ウィジェットを使えていますが、Entryに関しては上手くいっていません。 以下のようなプログラムで問題が起こります。 01 #!/usr/bin/perl -w 02 03 use Tk; 04 05 $buffer = ""; 06 07 $top = MainWindow->new(); 08 09 $top->Entry( -textvariable => \$buffer )->pack(); 10 $top->Button(-text => "EXIT", -command => sub { exit })->pack(); 11 MainLoop; 状況としては、9行目で作成されるエントリが文字入力を受け付けてくれないのです。 しかし、10行目のボタンを作成するプログラムを削除すると入力を受け付けてくれます。 widgetコマンドで見られるサンプルも一部は入力できますが、すべてのエントリに入力できるものはありませんでした。 どなたか原因のわかる方、よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- TEGe-works
- ベストアンサー率0% (0/0)
手当たり次第に試してみた方法ですが参考になれば。 環境変数のXMODIFIERが XMODIFIERS="@im=SCIM" となっていないでしょうか。 XMODIFIERS="@im=none" に設定しなおして(export XMODIFIERS="@im=none")、perlを実行してみてください。 我が家のFedora8(Perl-5.10.0 Tk-804.028)でも同様の状態が起こりまして... #!/usr/bin/perl use Tk; $mw = MainWindow->new(); $mw->Entry(-textvariable=>\$t1)->pack; $mw->Entry(-textvariable=>\$t2)->pack; MainLoop; とすると、後のEntryには入力できますが先のEntryは入力できません。 これを上述のように変更すると入力できるようになりました。 たぶんSCIMを使わないシステムでは起こらないのでしょうね。 perlのbugですかね?仕様、だったりして。
- SE-1
- ベストアンサー率57% (26/45)
Windows XP/ActivePerl と Ubuntu (6.06) で試しましたが、エラーが再現できないので解決策が提示できません・・・ 同じことですが、 $top->Button(-text => "EXIT", -command => \&exit )->pack(); ともできます。 お役に立てずすみません。
- SE-1
- ベストアンサー率57% (26/45)
実行したところ10行目の exit の後の全角スペースが引っかかたので、それを削除したら入力できました。
補足
早速のご回答ありがとうございます。 もうしわけありませんが。これは私のミスです。 実際には半角です。 また、別のマシン(ubuntu)に apt-get install perl-Tk で導入してみましたがこれも同様の状態です。 Linux環境が問題なのでしょうか。
お礼
いろいろとお骨を折っていただきまして、ありがとうございます。 もう少し調べてみようと思います。