我正在使用 perl/tk 实现一个 gui。
在我的第一个窗口的输入框中填写值后,我希望点击确定按钮。现在点击 OK 按钮后,将弹出另一个窗口,其中包含一些新的输入字段。同样,如果再次点击 OK 按钮,它应该会打开另一个新窗口,直到完成按钮出现。并且应该有一个上一个按钮也可以转到上一个窗口。
如何实施?
我正在使用 perl/tk 实现一个 gui。
在我的第一个窗口的输入框中填写值后,我希望点击确定按钮。现在点击 OK 按钮后,将弹出另一个窗口,其中包含一些新的输入字段。同样,如果再次点击 OK 按钮,它应该会打开另一个新窗口,直到完成按钮出现。并且应该有一个上一个按钮也可以转到上一个窗口。
如何实施?
Tk::NoteBook在这里会有所帮助。它通过带有选项卡的窗口显示进度,因此用户可以知道它们有多远。页面可以设置为“禁用”,这样用户在不使用 [Prev][Next] 按钮的情况下无法切换到它们(确保您的代码在每次翻页时运行)。
一个简单的例子:
#!/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');
}
用户1468315问:
如何在点击清除按钮时将输入字段值设置为空?
我相信这样的事情应该这样做。
$entry = $mw->Entry()->pack;
$button = $mw->Button(
-command => sub{$entry->delete(0, 'end');}
)->pack;
我假设您知道如何使用 Tk 创建窗口,并且您不希望这里有人用这个问题为您编写代码。
话虽如此,您应该创建一个类来使用该类的实例来执行此操作。该实例可以保存任何属性(或单个属性中的多个值),并且您的 Tk 应用程序可以使用该实例来分配任何新值,并且如果您需要在流程中返回/前进,则能够将它们读回。
对于 Tk 应用程序,您可以创建一个 sub 使用您的类实例和一个步骤号作为参数,或者您可以创建另一个类来控制另一个属性中的正确步骤并根据当前步骤或任何信号触发正确的方法“下一个”或“上一个”按钮。
看这个 Tk 教程,很好。您可以 Google 获取更多 Tk 示例。
请参阅此 Perl OOP 教程,了解有关在 Perl 中创建类和面向对象编程的基础知识。同样,您可以通过 Google 搜索有关该主题的更多信息。
此外,如果您想学习更多并在 Perl 中创建非常漂亮和更现代的 GUI,我强烈建议您研究Alien::wxWidgets,它是wxWidgets Project的 CPAN 库。
高温高压
弗朗西斯科