私はperlWin32::GUIを使用してデスクトップアプリケーションを開発しています。その中で、私はステータスの識別にプログレスバーを使用しています。プログレスバーの最大レベルを100に設定しました。その点で、長さに従って値をステップアップしています。以下にサンプルコードを書きました。100を入力長で割ってステップアップ値を計算しています。その中で、入力長が奇数の場合、ステップ値は浮動小数点になります。したがって、プログレスバーはその最大レベルを完全には完了していません。たとえば、長さが11の場合、ステップアップ値は9.09になります。プログレスバーは9のみとしてそれを取ります。したがって、進行レベルは99セグメントのみを完了します。100ではありません。提案を共有してください。
use strict;
use Win32;
use Win32::GUI;
my $DOS = Win32::GUI::GetPerlWindow();
Win32::GUI::Hide($DOS);
my $Upload_win=Win32::GUI::Window->new(
-name => 'UploadWindow',
-text => 'SVN-CHIP-Upload-Tool-V2-HurixSystems',
-left => 375,
-top => 400,
-width =>520,#370,
-height =>520,
#-menu =>$Menu,
-background => [190,190,190],
-dialogui => 1,
-maximizebox => 0,
);
my $ProcessButton=$Upload_win->AddButton(
-text => 'Upload',
-name => 'uploadbut',
-size => [90,25],
-pos => [200,360],
-background => [190,190,190],
-foreground => [],
-tabstop => 1,
);
my $Progress_bars=$Upload_win->AddProgressBar(
-pos=>[20,400],
-background=>[0,255,85],
-smooth => 1,
-size=>[470,20],
);
$Upload_win->Show();
Win32::GUI::Dialog();
Win32::GUI::Hide($DOS);
sub uploadbut_Click{
$Progress_bars->SetRange(0,100);
my $x=11;
my $y=100/$x;
for(1..$x){
Win32::GUI::DoEvents() >= 0;
$Progress_bars->SetStep($y);
$Progress_bars->StepIt();
sleep 1;
}
}