2013-04-10 156 views
1

我正在執行一個使用perl/tk的gui。如何在perl tk中點擊OK按鈕來打開窗口?

我希望在填寫第一個窗口的輸入框中的值後點擊OK按鈕。現在點擊確定按鈕後,另一個窗口將彈出一些新的輸入字段。以同樣的方式,如果再次點擊OK按鈕,它應該打開另一個新窗口,直到完成按鈕到來。 而且還應該有一個前一個按鈕來轉到上一個窗口。

這是如何實現的?

+0

你在製作某種嚮導? – 2013-04-10 08:16:46

回答

1

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'); 
} 
+0

如何在清除按鈕時將輸入字段值設置爲空? – 2013-04-12 11:25:13

0

我假設你知道如何用Tk創建窗口,並且你不希望有人在這裏爲你編寫這個問題。

這就是說,你應該創建一個類來做到這一點與該類的一個實例。實例可以包含任何屬性(或者單個屬性中的多個值),並且您的Tk應用程序可以與該實例一起工作來分配任何新值,並且如果需要在過程中後退/前進,可以將其讀回。

至於Tk應用程序,您可以創建一個使用您的類實例和步驟號作爲參數的子類,或者可以創建另一個類來控制另一個屬性中的右側步驟,並根據當前觸發正確的方法步驟或「下一個」或「前一個」按鈕的任何信號。

請參閱this Tk tutorial,非常好。你可以谷歌更多的Tk例子。

請參閱this Perl OOP tutorial瞭解有關在Perl中創建類和麪向對象編程的基礎知識。再次,您可以通過Google瞭解更多相關主題。另外,如果您想學習更多東西,並在Perl中創建非常好的和更現代的GUI,我會強烈建議查看Alien::wxWidgets,這是wxWidgets Project的CPAN庫。

HTH

舊金山

+0

可否請您提供一些可以幫助我實現上述GUI的鏈接或示例? – 2013-04-10 08:35:46

+0

我只是增加了更多的信息和鏈接到答案。祝你好運。 :-) – 2013-04-10 08:46:45

0

user1468315問:

如何設置一個輸入字段的值是空的打擊清除按鈕?

我相信像這樣應該做到這一點。

$entry = $mw->Entry()->pack; 

$button = $mw->Button(
-command => sub{$entry->delete(0, 'end');} 
)->pack; 
相關問題