我正在使用perl / tk实现一个gui。
我希望在第一个窗口的填充框中填入值后点击OK按钮。现在点击OK按钮后,将弹出另一个窗口,其中包含一些新的输入字段。以同样的方式,如果再次按下OK按钮,它应该打开另一个新窗口,直到完成按钮到来。 并且应该有一个前一个按钮也可以转到上一个窗口。
如何实施?
答案 0 :(得分: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');
}
答案 1 :(得分:0)
我假设您知道如何使用Tk创建窗口,并且您不希望有人在这里使用该问题为您编写代码。
话虽这么说,你应该创建一个类来实现这个类的实例。该实例可以包含任何属性(或单个属性中的多个值),并且您的Tk应用程序可以使用该实例分配任何新值,并且如果您需要在流程中返回/转发,则可以将其读回。
对于Tk应用程序,您可以创建一个使用您的类实例和一个步骤编号作为参数的子,或者您可以创建另一个类来控制另一个属性中的正确步骤并根据当前步骤触发正确的方法或“下一个”或“上一个”按钮的任何信号。
见this Tk tutorial,非常好。您可以通过Google获取更多Tk示例。
请参阅this Perl OOP tutorial以了解有关在Perl中创建类和面向对象编程的基础知识。同样,您可以通过Google了解有关该主题的更多信息。
另外,如果您想在Perl中学习更多知识并创建非常好的和更现代的GUI,我强烈建议您查看Alien::wxWidgets,这是{{3}的CPAN库}。
HTH
旧金山
答案 2 :(得分:0)
user1468315问:
如何在点击清除按钮时将输入字段值设置为空?
我相信这样的事情应该做到。
$entry = $mw->Entry()->pack;
$button = $mw->Button(
-command => sub{$entry->delete(0, 'end');}
)->pack;