首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perltk -记住文本小部件中的位置

Perltk -记住文本小部件中的位置
EN

Stack Overflow用户
提问于 2012-06-27 12:53:56
回答 1查看 163关注 0票数 1

我只是编写了一个非常简单的perl tk脚本来读取一个巨大的文本文件并用文本小部件显示它,并将它附加到滚动条小部件上。现在我的问题是,每次我运行脚本时,它都会从(整个文本文件的第一句)开始显示。如何使脚本记住我在文本中的位置,并在退出并再次启动脚本时显示相同的区域,即如果我读取文本的第1000行并退出该脚本,脚本应该在再次运行它时显示第1000行。(换句话说,记住滚动的位置)

我不是perl tk或perl方面的专业人士,但我尽力学习它。请给我一个明确的答复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-27 14:30:09

如果关闭perl脚本,它就会结束。它什么都记不起来了,它已经不在那里了。但是,您可以通过脚本将该位置保存到文件中,并且在启动时可以尝试从文件中读取该位置。请参见以下示例:

代码语言:javascript
复制
#!/usr/bin/perl
use warnings;
use strict;

use Tk;

my $file   = 'input.txt';
my $config = '.viewtext.conf';

my $mw = MainWindow->new(-title => 'Remember Position');
my $t = $mw->Scrolled("Text", -scrollbars => 'se')->pack;
my $b = $mw->Button(-text => 'Quit', -command => \&quit)->pack;


open my $FH, '<', $file or die $!;
$t->Contents(<$FH>);
close $FH;

if (-f $config) {
    open my $FH, '<', $config or die $!;
    my ($x0, $x1, $y0, $y1) = split / /, <$FH>;
    $t->xviewMoveto($x0);                            # Here we restore the saved position
    $t->yviewMoveto($y0);
}

MainLoop();

sub quit {
    open my $CONF, '>', $config or die $!;
    print {$CONF} join ' ', $t->xview, $t->yview;    # This is the current position
    close $CONF;
    $mw->destroy;
}

如果要打开几个不同的文件,您必须记住文件的路径和位置。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11226668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档