gpt4 book ai didi

perl - 如何为是/否用户输入创建 Tk::Dialog?

转载 作者:行者123 更新时间:2023-12-03 07:52:23 27 4
gpt4 key购买 nike

我正在尝试在 Perl 中使用简单的 Tk Yes/No 对话框。我有以下基于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.

我做错了什么?

最佳答案

由于我使用的是 macOS,因此我必须费尽心思才能让这个东西运行,但基本上您遇到的错误是由于您尝试实例化 Dialog 对象的方式造成的。

您使用的 $mw->Dialog->new() 语法不正确。

您需要首先使用MainWindow->new创建主窗口,然后使用它创建Dialog对象。

这应该有效:

#!/urs/bin/perl

use strict;
use warnings;
use Tk;
use Tk::Dialog;

my $mw = MainWindow->new(); # Create main window first

# Create the Dialog
my $dialog = $mw->Dialog(-text => 'Save file?',
-bitmap => 'question',
-title => 'Save File Dialog',
-default_button => 'Yes',
-buttons => [qw/Yes No Cancel/]);

my $answer = $dialog->Show();

print "$answer\n";

MainLoop();

确保您的 x11 服务器正在运行。

我必须看到这个:

enter image description here

编辑:如何在 macOS 上运行脚本?

  1. 安装https://www.xquartz.org/
  2. 从“应用程序”文件夹启动 XQuartz。一旦运行,您应该会看到一个 xterm 窗口。这表明 X11 服务器处于事件状态。
  3. 从 macOS 终端运行脚本,但通过检查 echo $DISPLAY 确保您的显示已设置。它应该设置为类似 :0 的值。

关于perl - 如何为是/否用户输入创建 Tk::Dialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76856475/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com