在 perl Tk 中重用网格坐标

问题描述 投票:0回答:1

我有一个应用程序,它从文件系统读取数据并根据文件内容在 3x3 网格中动态创建小部件。如果我需要用一个新的小部件的信息来替换其中一个小部件(或缺少的小部件),那么原来的小部件会发生什么(下面的示例)。如果此应用程序运行很长时间,请尝试避免任何潜在的内存泄漏。

foreach my $i (0..2) {
    foreach my $j (0..2) {
        my $box = $mw->Label(-text => "$i/$j")->grid(-row=> $i, -column => $j);
    }
}

my $replacementBox = $mw->Label(-text => "replacement")->grid(-row=> 1, -column => 1);

它成功替换了示例中的小部件,但在谷歌搜索此问题时找不到结果。谢谢!

perl tk-toolkit
1个回答
0
投票

我多次尝试更换盒子,但内存消耗的增加确实很小。如果您不打算创建数十万个盒子,则无需担心。

#!/usr/bin/perl
use warnings;
use strict;

use Tk qw{ MainLoop };

my $mw = 'MainWindow'->new;

for my $i (0..2) {
    for my $j (0..2) {
        my $box = $mw->Label(-text => "$i/$j")->grid(-row=> $i, -column => $j);
    }
}

my @boxes;
$mw->repeat(10, sub {
               push @boxes, $mw->Label(-text => "replacement " . $#boxes)->grid(-row=> 1, -column => 1);
           });

MainLoop();
© www.soinside.com 2019 - 2024. All rights reserved.