首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl Tkx模块通过SSH隧道比直接到X服务器运行得更好。

Perl Tkx模块通过SSH隧道比直接到X服务器运行得更好。
EN

Unix & Linux用户
提问于 2020-11-27 21:55:05
回答 1查看 37关注 0票数 0

尝试将ActivePerl (在Windows上)移植到CENTOS环境。我惊讶地发现perl Tkx模块在ActivePerl之外并不常见,必须从CPAN安装,而且它实际上没有通过测试。

总之,我制作了一个qemu并在其上安装了Centos 8。然后,我想看看是否可以让Tkx模块在上面工作。

根据这个博客的建议,我通过yum安装了一些东西,并通过CPAN程序从cpan加载了Tcl和Tkx模块。(正是PERL_DL_NONLAZY环境问题激发了他在博客上发表自己的解决方案。)

为了测试它,我尝试了这个程序

代码语言:javascript
复制
#


BEGIN {
    $ENV{PERL_DL_NONLAZY} = 1;
}

    use Tkx;

    Tkx::button(".b",
        -text => "Hello, world",
        -command => sub { Tkx::destroy("."); },
    );
    Tkx::pack(".b");

    Tkx::MainLoop()

但是运行这个程序有一些意想不到的行为。当mobaxterm运行ssh会话并在其上转发X11时,它似乎可以工作。但是,在模拟显示中打开一个shell,并运行程序(它应该出现在模拟显示上),而是在虚拟显示的右上方放置一个几乎为零大小的小部件。您可以更好地将其拖到桌面上,并将窗口侧拖动以使其更大。这显示了窗口标题栏中的标题。但是按钮所在的地方,只是一个点,这显然就是按钮,因为如果你点击它,程序就会结束,就像点击“HELLO WORLD”按钮一样。

我无法解释为什么这个小部件在直接X11上显示的大小不适当,而它在隧道X11上似乎工作正常。

增编:从调试器运行这一行

代码语言:javascript
复制
 x Tkx::font_actual('TkTextFont')

报告两个环境中的差异。

通过ssh,它基本上是-size=>9,而在本机下是-size=>0。

因此,我将检查字体'DejaVu Sans‘是否在本地安装

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-11-28 00:38:09

Deja字体安装在Centos 8中,但是当Tk访问它们时,它们的大小被设置为零。

我不知道系统是否有办法为它们设置默认大小,但作为一项工作,我已经创建了一些代码,可以将零大小的Tk字体更改为一些正常值,如下所示

代码语言:javascript
复制
#


BEGIN {
    $ENV{PERL_DL_NONLAZY} = 1;
}

        use Tkx;

        # Get the names of Tk's fonts
        my @fontnames = Tkx::SplitList( Tkx::font_names() );
    
        # resize zero sized Tk fonts to 9 points
        foreach( @fontnames)
        {
            my %actual = Tkx::SplitList(  Tkx::font_actual($_) );
    
            if ( $actual{-size} == 0 )
            {
                Tkx::font_configure( $_, -size=>9 );
            }
        }
    
        Tkx::button(".b",
            -text => "Hello, world",
            -command => sub { Tkx::destroy("."); },
        );

        Tkx::pack(".b");
        
        Tkx::MainLoop()
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/621864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档