Google グループは Usenet の新規の投稿と購読のサポートを終了しました。過去のコンテンツは引き続き閲覧できます。
表示しない

perl/TkでIME入力

閲覧: 13 回
最初の未読メッセージにスキップ

hasimoto38

未読、
2003/12/15 22:40:042003/12/15
To:
橋本です。

現在、WindowsXP上のActivePerlでperl/Tkのプログラムを作っています。
Tk::Entryに日本語を入れると、かなりの頻度でperlが落ちるようです。
#utf8と何か関係があり?んんん?
CPANの最新ソースを覗いたらutf8対応を行っているようですが、
この問題は、すぐには解決されない気がしてます。

-textvariableを使えば、安定した動作が望める気配なので(憶測です)、
<FocusIn>でフックしてIME入力を行うプログラムを作成しました。
#kinput2モドキといえば分かりやすいかな。
とりあえず動作するものは出来たのですが、何ぶんWindowsは素人なので
どなたか評価して*改善して*もらえたらと思い記事を書き込みました。

私にメールを送ってもらえれば、ソースをお送りします。
mailto:hasim...@kokusyou.co.jp (橋本一人 はしもとかずひと)

Shinji KONO

未読、
2003/12/16 1:47:582003/12/16
To:
河野真治 @ 琉球大学情報工学です。

In article <o8vDb.1658$vR3.1...@news1.rdc1.ky.home.ne.jp>, "hasimoto38" <hasim...@kokusyou.co.jp> writes


> 現在、WindowsXP上のActivePerlでperl/Tkのプログラムを作っています。
> Tk::Entryに日本語を入れると、かなりの頻度でperlが落ちるようです。
> #utf8と何か関係があり?んんん?

これは、なんか体験した記憶がある... 落ちるのはもちろんバグな
んですけど... フォントの設定の問題だったような気がする。

> -textvariableを使えば、安定した動作が望める気配なので(憶測です)、
> <FocusIn>でフックしてIME入力を行うプログラムを作成しました。
> #kinput2モドキといえば分かりやすいかな。
> とりあえず動作するものは出来たのですが、何ぶんWindowsは素人なので
> どなたか評価して*改善して*もらえたらと思い記事を書き込みました。

でも、もうWindows では使わないからなぁ....

---
Shinji KONO @ Information Engineering, University of the Ryukyus,
河野真治 @ 琉球大学工学部情報工学科,

西野 太郎

未読、
2003/12/17 9:41:412003/12/17
To:
西野と申します。

橋本さん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;


西野 太郎

未読、
2003/12/19 9:45:012003/12/19
To:
西野です。
橋本さんから何かの勘違いで、私宛に直メールがありましたので、
ニュースグループに再投稿します。

(以下、橋本さんの文面です。)

橋本です。

> ActivePerlのバージョンや、Tkのバージョンが明記されていないので、
> バグかどうかは分かりませんが、少なくてもActivePerl Build 807で、
> かつTkが804.025であれば、正常に動きますよ。

私の環境はActivePerl Build 807、Tk 804.024です。
TkはBuild 807にバンドルされているものを使っています。

> 正常に動きますよ。

804.024では、Entryの表示幅を超える入力を行うと確実に落ちます。
804.025では問題ないのでしょうか?

Windowsでperl/Tkを使っている人っていないのかな?
他にも奇妙なバグを発見したので、今の所、WindowsではTkを
使わないことをお薦めます。

西野 太郎

未読、
2003/12/19 10:15:282003/12/19
To:
西野です。

橋本さんwrote:


>私の環境はActivePerl Build 807、Tk 804.024です。
>TkはBuild 807にバンドルされているものを使っています。
>
>> 正常に動きますよ。
>
>804.024では、Entryの表示幅を超える入力を行うと確実に落ちます。
>804.025では問題ないのでしょうか?
>

804.025では全然問題ないですね。そもそも、804.024って大バグがあったので
有名ですし、そのすぐ後に「Tk804.024 "jumbo patch"」なるパッチが出ました。
私個人から言わせると、バグと言うよりは、Perl5.6以前を対象にしてたがために、
すべて中途半端で、utf8も本格的に対応していなかったはずです。

>Windowsでperl/Tkを使っている人っていないのかな?
>他にも奇妙なバグを発見したので、今の所、WindowsではTkを
>使わないことをお薦めます。
>

厳しい言い方をすれば、上記に私が書いたことを知らない人は、Perl/Tk
を使うべきでないということでしょう。
それに、804.025が出ているのですから、インストールすればいいだけの
話であって、「使わないことをお薦めます。」というのはちょっとおかしい
ですよ。804.024ではutf8対応していないのだから、そこをわきまえて使えば
いいですし、日本語等を使いたければバージョンアップすればいいし、何の
問題もないはずです。要はバンドルされているからと言って、無反省に使うなと
いうことでしょう。

Shinji KONO

未読、
2003/12/19 11:49:562003/12/19
To:
河野真治 @ 琉球大学情報工学です。

Perl/TkのMLは、なんか知らないうちに追い出されたようなきが...

In article <brv4me$2n71$1...@dojima-n0.hi-ho.ne.jp>, taro-n...@sam.hi-ho.ne.jp (西野 太 郎) writes


> 804.025では全然問題ないですね。そもそも、804.024って大バグがあったので
> 有名ですし、そのすぐ後に「Tk804.024 "jumbo patch"」なるパッチが出ました。
> 私個人から言わせると、バグと言うよりは、Perl5.6以前を対象にしてたがために、
> すべて中途半端で、utf8も本格的に対応していなかったはずです。

ふーん。

> 問題もないはずです。要はバンドルされているからと言って、無反省に使うなと
> いうことでしょう。

ま、そうれはそうなんだけど。

patch を追うのがめんどくて、Tk800.024 をいまだに使ってます。
ある意味で動けば古くてもいいわけなので。

ひさしぶりに入れ換えてみるか。

hasimoto38

未読、
2003/12/19 13:07:592003/12/19
To:
橋本です。

804.025を使ってみます。
西野さん、河野さん、ありがとうございました。

別件になりますが…
ActivePerlで使っているのはMicrosoftのCですよね。
西野さんはMicrosoftのCをお持ちですか?
私は持ってないので、Tkの部分だけMinGWを使ってTk.dllを
作ろうと思っていますが、この場合にダイナミックリンクは
正常に行われるのでしょうか?
ご存知なら教えて頂けないですか。


西野 太郎

未読、
2003/12/20 1:14:192003/12/20
To:
西野です。

>別件になりますが…
>ActivePerlで使っているのはMicrosoftのCですよね。
>西野さんはMicrosoftのCをお持ちですか?
>私は持ってないので、Tkの部分だけMinGWを使ってTk.dllを
>作ろうと思っていますが、この場合にダイナミックリンクは
>正常に行われるのでしょうか?
>ご存知なら教えて頂けないですか。
>

私は、CPANからビルドする機会が多いので、MS Visual C++も持ってます
けど、コンパイラが無くても、
ppm install http://theoryx5.uwinnipeg.ca/ppms/Tk.ppd
で、804.025がインストール出来ますが。

hasimoto38

未読、
2003/12/20 6:14:352003/12/20
To:
橋本です。

> ppm install http://theoryx5.uwinnipeg.ca/ppms/Tk.ppd
> で、804.025がインストール出来ますが。

本当に何から何まで教えて頂きありがとうございます。
ppm installだと、"already installed"と怒られてしまうので、
以下の手順でアップグレードしました。
#ppmって何だか分かりにくい。

ppm repository "xxx" http://theoryx5.uwinnipeg.ca/
ppm upgrade Tk -install -precious

無事に804.025で日本語が入力できました。いやはや。


新着メール 0 件