スキップしてメイン コンテンツに移動

Perl/Tk の基本的なこと

X を利用したアプリケーションを作る方法は色々あるが、Tk を用いると簡単に出来る。

Tk - Wikipedia
https://ja.wikipedia.org/wiki/Tk_(ツールキット)

Tk で作るWindowをどの言語で書くかによって変わってくるが、Tcl/Tkが最も有名かもしれない。

Tcl/Tk - Wikipedia
https://ja.wikipedia.org/wiki/Tcl/Tk

wish (Windowing Shell) を用いてスクリプトを組むことでグラフィカルなアプリを作れる。
Tclはこのwishで使われるプログラミング言語であり、簡単に使える。かなり多くのシステムに導入されていることもあり、特に何かをインストールせずとも使うことが出来る。
このTclの部分をperlに置き換えたものがPerl/Tkである。

Perl/Tk

インストール

Perl/Tk は Tcl/Tk と違いデフォルトでインストールされていないことが多い。
ubuntuだと perl-tk をインストールすると使えるようになる。
# apt install perl-tk

取り敢えず作ってみる

次のようなサンプルファイル sample.pl を作る。
sample.pl
use utf8;
use Tk;

# トップウィンドウを作る
$top = MainWindow->new();

# ウィンドウ内に文字(ラベル)を表示する
$label = $top->Label(-text => "ここに文字を書く")->pack();

# ウィンドウを生成する
MainLoop();
ちなみに文字コードは UTF-8 になってる。
$ file sample.pl 
sample.pl: UTF-8 Unicode text
次のコマンドで実行する。
$ perl sample.pl
実行できる形の sample.pl
Shebang を書いて実行ファイルとしても実行できる。
たぶん次のようなファイルになる。
一行目のShebangは環境によって異なるが多くのシステムは多分これで通る。
#!/usr/bin/perl
use utf8;
use Tk;

# トップウィンドウを作る
$top = MainWindow->new();

# ウィンドウ内に文字(ラベル)を表示する
$label = $top->Label(-text => "ここに文字を書く")->pack();

# ウィンドウを生成する
MainLoop();

簡単な説明

use utf8;
これがないと日本語の文字化けが起こる。
use Tk;
GUIアプリを作るために必要なモジュール。
$top = MainWindow->new();
ウィンドウを作る。
$label = $top->Label(-text => "ここに文字を書く")->pack();
文字「ここに文字を書く」を表示する。
MainLoop();
このコマンドでウィンドウが作られる。
これがないと何も表示されない。

Tk についてのWebサイト

Tcl/Tk 関連

Tcl/Tk
https://www.tcl.tk/
Tcl/Tkでプログラムを書く(1)
https://qiita.com/akinori-ito/items/92ca39617773a2f48e0b
Tcl/Tkでプログラムを書く(2)
https://qiita.com/akinori-ito/items/a6abe82f4c814272f06c
Tcl/Tkでプログラムを書く(3)
https://qiita.com/akinori-ito/items/919edfd6c52cf0b37247
Tcl/Tk によるGUI(1)
http://www.nurs.or.jp/~sug/soft/super/tk.htm
Tcl/Tk によるGUI(2)
http://www.nurs.or.jp/~sug/soft/super/tk2.htm
Tcl/Tk とは
http://www.not-enough.org/abe/manual/unix2-au99/tcltk1.html
Tcl/Tk GUI Programming
http://www.nct9.ne.jp/m_hiroi/tcl_tk.html

Perl/Tk関連

Perl/Tk を使った GUI プログラミング (前編)
http://www.nct9.ne.jp/m_hiroi/perl_tk/perltk_gui1.html
Perl/Tk を使った GUI プログラミング (後編)
http://www.nct9.ne.jp/m_hiroi/perl_tk/perltk_gui2.html
Perl/Tk - 杜甫々のwww入門
http://www.tohoho-web.com/perl/perltk.htm
高度なPerl/Tkウィジェットを使う
https://www.ibm.com/developerworks/jp/linux/library/l-ptkwidg/index.html

コメント

このブログの人気の投稿

Ubuntu で RAIDディスクをマウントする

謎のHDDが見つかった。 データを確認するためWindowsにつなぐもマウントされず。 これは extとかffsの辺りかなと思い、Linux(Ubuntu)に繋ぐ。 しかし、自動マウントされない。 取り敢えずマウントする。 # mount /dev/sdb1 /mnt/disk すると'linux_raid_member'とエラー表示された。 ということで、まずファイルシステムを確認。 # parted -l このコマンドでファイルシステムが表示される。 また、Gparted でも表示される。 そこでRAIDディスクを扱うためにmdadmパッケージをインストール。 # apt install mdadm ネットでは mountコマンドの -t オプションで明示的にファイルシステムを指定するとマウントできると書いてあったのでそれを試すとマウントできた。 # mount -t ext3 /dev/sdb1 /mnt/disk 内容を確認すると不要なデータだったのでデータを削除する。 # shred -v /deb/sdb この処理はとても時間がかかるので普段使わないコンピュータで処理をした。

自動ログイン on Lubuntu

Lubuntu 19.04 の 自動ログインを設定してみた。 グラフィカルログインを自動で行うようにしたいが、 ユーザー設定 の中に自動ログインの設定がない。 そこでコマンドラインから設定してみた。 まず、ログインをするときに使用しているディスプレイマネージャを確認する。 $ cat /etc/X11/default-display-manager /usr/bin/sddm sddm を使っているので、sddm の自動ログインを設定する。 OSは systemd で動いていると設定ファイルがないようなので作成する。 # sddm --example-config > /etc/sddm.conf.d/sddm.conf この設定ファイルに Autologin について書いてあるのでここにユーザ名を入力。 $ head /etc/sddm.conf.d/sddm.conf [Autologin] # Whether sddm should automatically log back into sessions when they exit Relogin=false # Name of session file for autologin session (if empty try last logged in) Session= # Username for autologin session User= ここの User= にユーザ名を書き込み保存後、再起動すると自動でログインされる。

TVに繋いでいた録画用HDDが認識しなくなった

ポロポロとものが壊れていく。 年数もそれなりに経っているので仕方がないと思うが、  Panasonic VIERA TH-L32X3  メーカーページ http://panasonic.jp/viera/p-db/TH-L32X3.html 上記VIERAに繋いでいた録画用のHDDが急に認識しなくなった。 実はこれで二回目のトラブルである。 一回目は買って1年ほどでこの症状が出た。 この時はHDDが物理的な障害で故障したと思い、ダメ元で再接続再フォーマットした。 このHDDはそのあと5年以上正常に動作していた。 結局この時の障害は論理障害だったのだと思う。 今回も同様の症状だったので、復旧を試みることにした。 こちらのサイトに Panasonic製のセットトップボックスへ繋いでいたHDDの修復について書いてあった。 Panasonic CATV STBの外付けHDDのファイルシステム修復 おぼえ書き http://qiita.com/a_saitoh/items/93a9983b988b541d2cb1 これを参考にして、FreeBSD11.0( https://www.freebsd.org/ja/ ) に外付けHDDを繋いで、fsck_ffs -n を実行するも復旧せず。 仕方がないので、fsck_ffs -y や fsck_ufs -n 、 fsck_ufs -y などをかけてからTVにつなぐと認識した。 録画データは諦めていたので、いろんなコマンドをかけてしまったので、 どのコマンドが良かったかはっきりとしないが、 無事にデータが参照できるようになった。