【问题标题】:Perl Tk Label change background color associate with textvariablePerl Tk 标签更改与文本变量关联的背景颜色
【发布时间】:2015-03-27 17:08:00
【问题描述】:

如何自动更改与文本变量关联的标签背景颜色? 即当 textvariable 为正值时,背景变为绿色。当它为负值时,它会自动变为红色。请指教。

use strict;
use Tk;
my $mw = new MainWindow(-title => "TTTT",
 );
$mw->geometry( "400x300" );

my $LAST1 ;
my $bgclr = 'green';
my $label1 = $mw->Label ( -textvariable=>\$LAST1, -fg=>'White',
-font=> 'arial 20',
-bg => $bgclr,
);

$label1->place(-x=>10, -y => 65);

$mw->repeat(2000,\&tick);
MainLoop;


sub tick {

my $AA= '9.16';
my $sum = '235.72';
my $avge = (($sum + $AA) / 25);
my $RR = ((($AA - $avge) / $avge) *100);
$LAST1 = $RR;
}

【问题讨论】:

    标签: perl text label background-color tk


    【解决方案1】:

    我建议在大型程序中使用 Treads 和 Tread::Shared,以便在运行外部潜艇时更新主 GUI。 但是对于您的示例,这可能就足够了。

    这是基于您提供的代码的示例代码:

    use strict;
    use Tk;
    our $time_tick = 1;
    our $label1;
    our $Pos_Color = 'green';
    our $Neg_Color = 'red';
    my $mw = new MainWindow(-title => "TTTT",
     );
    $mw->geometry( "400x300" );
    
    my $LAST1 ;
    my $bgclr = $Pos_Color;
    $label1 = $mw->Label ( -textvariable=>\$time_tick, -fg=>'White',
    -font=> 'arial 20',
    -bg => $bgclr,
    );
    
    $label1->place(-x=>10, -y => 65);
    
    $mw->repeat(2000,\&tick);
    MainLoop;
    
    
    sub tick {
        $time_tick = $time_tick * -1;
        if ($time_tick > 0)
        {
            $label1->configure(-bg => $Pos_Color);
        }
        else
        {
            $label1->configure(-bg => $Neg_Color);  
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      相关资源
      最近更新 更多