Perl Tk打开其他对话框

问题描述

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()

来启动应用程序

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...