Tk 包含各種常用的 GUI 元件,如下列表
元件名稱 | 類別名稱 |
---|---|
視窗區域 | Frame |
標籤 | Label |
按鈕 | Button |
核取方塊 | CheckButton |
選取方塊 | RadioButton |
下拉式列表 | ComboBox |
列表 | Listbox |
捲動軸 | Scrollbar |
文字方塊 | Entry |
文字區域 | Text |
以下是個簡單例子
#!/usr/bin/perl -w use Tk; use strict; use warnings; my $mw = MainWindow->new; my $some = $mw->Label(-text => "Tk's job!!")->pack; MainLoop; # 《程式語言教學誌》的範例程式 # http://pydoing.blogspot.com/ # 檔名:tkdemo.pl # 功能:示範 Perl 程式 # 作者:張凱慶 # 時間:西元 2013 年 1 月
使用 Tk 首先要 use Tk
use Tk;
然後建立 GUI 的主要視窗物件 (object)
my $mw = MainWindow->new;
這個視窗只有一個文字標籤, Label 型態的 $some
my $some = $mw->Label(-text => "Tk's job!!")->pack;
最後使用 pack 方法,這會讓視窗元件自行安排在視窗中的位置。
這個視窗只有一個文字標籤, Label 型態的 $some
MainLoop;
來執行看看囉!結果如下
現在我們要把 GUI 的建置放在另一個程式檔案中,預計做出如下的 GUI
完整程式請參考
下圖為每個視窗元件與程式中變數 (variable) 的關係
其中像 $input_field 為文字輸入欄 Entry 物件,這裡我們將之前的 pack() 改成 grid() ,這是利用格子將視窗元件定位。如下 -row 設定為 0 就是從上往下數的第 1 列, -column 設定為 0 就是從左往右數的第 2 行, -columnspan 設定水平格子的擴張數,此處設定為 6 ,也就是這個文字輸入欄水平佔有六格,至於 -sticky 設定擴張的方向, "e" 為東 "w" 為西
my $input_field = $mw->Entry(); $input_field->grid(-row => 0, -column => 1, -columnspan => 6, -sticky => "ew");
每個 Button 的 grid() 設定也都類似,我們額外有設定 -command
my $new_button = $mw->Button(-text => "New", -command => \&new_button); $new_button->grid(-row => 2, -column => 0);
設定 -command 的目的是連結事件處理的副程式 (subroutine) ,例如上面設定按下 New 按鈕後,便執行 new_button 這個副程式。 New 也是我們要在 GUI 中建立 Encrypt 物件按鈕,接下來我們要來仔細看看 new_button ,也就是整合 Encrypt 套件 (package) 囉!
中英文術語對照 | |
---|---|
標籤 | label |
按鈕 | button |
選單 | menu |
文字方塊 | textfield |
物件 | object |
變數 | variable |
副程式 | subroutine |
套件 | package |
您可以繼續參考
GUI 篇
相關目錄
回 Perl 入門指南
回 Perl 教材
回首頁
參考資料
http://search.cpan.org/~ni-s/Tk-804.027/pod/UserGuide.pod
http://search.cpan.org/~ni-s/Tk-804.027/pod/Button.pod
http://search.cpan.org/~ni-s/Tk-804.027/pod/Entry.pod
http://search.cpan.org/~ni-s/Tk-804.027/pod/Label.pod
沒有留言:
張貼留言