我试图在Perl中使用一个简单的Tk是/否对话框。我有以下基于metacpan示例的脚本:
#!/usr/bin/perl
use strict;
use warnings;
use Tk::Dialog;
my $mw->Dialog->new();
my $dialog = $mw->Dialog(-text => 'Save file?',
-bitmap => 'question',
-title => 'Save File Dialog',
-default_button => 'Yes',
-buttons => [qw/Yes No Cancel/]);
print "$dialog\n";
当我运行它时,它会抛出以下错误:
Can't call method "Dialog" on an undefined value at script.pl line N.
我做错了什么?
1条答案
按热度按时间ljsrvy3e1#
由于我在macOS上,我不得不跳过几个环来运行这个东西,但基本上你遇到的错误是因为你试图示例化Dialog对象的方式。
您使用的
$mw->Dialog->new()
语法不正确。首先需要使用
MainWindow->new
创建主窗口,然后使用它创建Dialog对象。这应该是可行的:
确保您的x11服务器正在运行。
我得看看这个
编辑:如何在macOS上运行脚本?
1.安装https://www.xquartz.org/
1.从应用程序文件夹启动XQuartz。一旦它运行,您应该看到一个
xterm
窗口。这表明X11服务器处于活动状态。1.从macOS终端运行该脚本,但请确保通过检查
echo $DISPLAY
设置了显示。它应该设置为类似:0
的值。