我正在執行一個使用perl/tk的gui。如何在perl tk中點擊OK按鈕來打開窗口?
我希望在填寫第一個窗口的輸入框中的值後點擊OK按鈕。現在點擊確定按鈕後,另一個窗口將彈出一些新的輸入字段。以同樣的方式,如果再次點擊OK按鈕,它應該打開另一個新窗口,直到完成按鈕到來。 而且還應該有一個前一個按鈕來轉到上一個窗口。
這是如何實現的?
我正在執行一個使用perl/tk的gui。如何在perl tk中點擊OK按鈕來打開窗口?
我希望在填寫第一個窗口的輸入框中的值後點擊OK按鈕。現在點擊確定按鈕後,另一個窗口將彈出一些新的輸入字段。以同樣的方式,如果再次點擊OK按鈕,它應該打開另一個新窗口,直到完成按鈕到來。 而且還應該有一個前一個按鈕來轉到上一個窗口。
這是如何實現的?
Tk::NoteBook在這兒可以幫忙。它通過帶有標籤的窗口顯示進度,因此用戶可以告訴它們有多遠。可以將頁面設置爲「禁用」,以便用戶無需使用[上一個] [下一個]按鈕即可切換到它們(確保您的代碼在每個頁面上都可以運行)。
一個簡單的例子:
#!/usr/bin/perl
use strict;
use warnings;
use Tk;
use Tk::NoteBook;
my $mw=MainWindow->new();
my $nb=$mw->NoteBook->pack(-expand=>1,-fill=>'both');
my $page1=$nb->add('page1',-label=>'Start');
my $page2=$nb->add('page2',-label=>'Finish',-state=>'disabled');
$page1->Button(-text=>'Next',-command=>\&next_page)->pack;
$page2->Button(-text=>'Exit',-command=>sub{exit;})->pack;
MainLoop;
sub next_page() {
$nb->pageconfigure('page2',-state=>'normal');
$nb->raise('page2');
$nb->pageconfigure('page1',-state=>'disabled');
}
如何在清除按鈕時將輸入字段值設置爲空? – 2013-04-12 11:25:13
我假設你知道如何用Tk創建窗口,並且你不希望有人在這裏爲你編寫這個問題。
這就是說,你應該創建一個類來做到這一點與該類的一個實例。實例可以包含任何屬性(或者單個屬性中的多個值),並且您的Tk應用程序可以與該實例一起工作來分配任何新值,並且如果需要在過程中後退/前進,可以將其讀回。
至於Tk應用程序,您可以創建一個使用您的類實例和步驟號作爲參數的子類,或者可以創建另一個類來控制另一個屬性中的右側步驟,並根據當前觸發正確的方法步驟或「下一個」或「前一個」按鈕的任何信號。
請參閱this Tk tutorial,非常好。你可以谷歌更多的Tk例子。
請參閱this Perl OOP tutorial瞭解有關在Perl中創建類和麪向對象編程的基礎知識。再次,您可以通過Google瞭解更多相關主題。另外,如果您想學習更多東西,並在Perl中創建非常好的和更現代的GUI,我會強烈建議查看Alien::wxWidgets,這是wxWidgets Project的CPAN庫。
HTH
舊金山
可否請您提供一些可以幫助我實現上述GUI的鏈接或示例? – 2013-04-10 08:35:46
我只是增加了更多的信息和鏈接到答案。祝你好運。 :-) – 2013-04-10 08:46:45
user1468315問:
如何設置一個輸入字段的值是空的打擊清除按鈕?
我相信像這樣應該做到這一點。
$entry = $mw->Entry()->pack;
$button = $mw->Button(
-command => sub{$entry->delete(0, 'end');}
)->pack;
你在製作某種嚮導? – 2013-04-10 08:16:46