Re: perl/Tkで IME 入力
西野と申します。
橋本さんwrote:
>現在、WindowsXP上のActivePerlでperl/Tkのプログラムを作っています。
>Tk::Entryに日本語を入れると、かなりの頻度でperlが落ちるようです。
>#utf8と何か関係があり?んんん?
>CPANの最新ソースを覗いたらutf8対応を行っているようですが、
>この問題は、すぐには解決されない気がしてます。
>
>-textvariableを使えば、安定した動作が望める気配なので(憶測です)、
><FocusIn>でフックしてIME入力を行うプログラムを作成しました。
>
ActivePerlのバージョンや、Tkのバージョンが明記されていないので、
バグかどうかは分かりませんが、少なくてもActivePerl Build 807で、
かつTkが804.025であれば、正常に動きますよ。実験のため、以下の
ようなチョンプロを書いて実験してみました。EntryにIMEから日本語
を入力してReturnキーを押すと、コンソールに入力内容を出力すると
いう、極めて簡単なものです。
#!perl
use strict;
use warnings;
use Tk;
use Encode;
my $mw = MainWindow->new();
my $var;
my $entry = $mw->Entry(
-width => 20,
-font => 15,
)->pack;
$entry->bind('<Key>', [\&disp, Ev('K')]);
sub disp {
if ( $entry->get and $_[1] eq "Return" ) {
print encode("shiftjis", $entry->get), "\n";
}
}
MainLoop;
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735