问题描述
include_once 'vendor/autoload.php';
use phpseclib3\File\X509;
use phpseclib3\Crypt\PublicKeyLoader;
$privKey = PublicKeyLoader::load(file_get_contents('/path/to/key.pem'),$password = false);
$x509 = new X509();
$x509->setPrivateKey($privKey);
$x509->setDNProp('id-at-organizationName','phpseclib demo cert');
$csr = $x509->signCSR();
echo $x509->saveCSR($csr);
这个简单的perl产生/显示两个对话框,如何防止它出现?
解决方法
您发布的代码中有错误,因此无法编译。
从您的问题中可以理解,您想提供一个Dialog窗口,而不必同时打开MainWindow。
对于Tk应用程序,必须实例化一个Tk::MainWindow
,以用作应用程序窗口层次结构中的根。但是,不需要实际显示此窗口。
如果您想隐藏MainWindow,可以像下面这样调用->withdraw
:
use strict;
use warnings;
use Tk;
my $mw= MainWindow->new;
$mw->withdraw;
my $response = $mw->messageBox(-title => 'Title',-message => 'Message',-type => 'YesNo',-icon => 'question',-default => 'yes');
print "$response\n";
请注意,直到用户单击按钮,messageBox调用才会阻塞。 MessageBox根据需要调用事件循环,因此您不必通过调用MainLoop()