标签: tkx

我应该将Perl/Tk,Tcl :: Tk或Tkx用于Perl GUI吗?

我真的很喜欢Perl/Tk,但已经认为它是DOA.我认为Tcl::Tk并且Tkx是更好的解决方案.假设我放弃了Perl/Tk.是否是"最受支持"的路线Tcl::Tk(自2007年以来一直没有更新,其作者似乎无法联系到),或者Tkx?这些是否被积极使用/支持?

perl user-interface tk-toolkit tcl tkx

16
推荐指数
2
解决办法
9238
查看次数

拖放IDE for TKX

有没有人知道用TKX制作的GUI的好IDE?像NetBeans或VS这样的拖放功能会很棒.

ide perl user-interface tkx

5
推荐指数
1
解决办法
501
查看次数

Perl Tkx,"button"和"ttk__button"有什么区别?

我一直在使用Perl Tkx开发GUI,并发现可以使用两个单独的函数来创建按钮.(buttonttk__button).

到目前为止,我发现的唯一区别是button函数似乎居中对齐文本,而ttk__button函数似乎左对齐文本.


示例使用button:

#!/usr/bin/perl

use strict;
use warnings;

use Tkx;

my $text = "Hello\nworld!\n\nThis is some text...";
my $mw = Tkx::widget->new(".");

my $b = $mw->new_button(
    -text => $text,
    -command => sub { exit; },
);
$b->g_grid;

Tkx::MainLoop()
Run Code Online (Sandbox Code Playgroud)

此脚本将使文本居中:

居中的文字


示例使用ttk__button:

#!/usr/bin/perl

use strict;
use warnings;

use Tkx;

my $text = "Hello\nworld!\n\nThis is some text...";
my $mw = Tkx::widget->new(".");

my $b = $mw->new_ttk__button(
    -text => $text,
    -command => sub …
Run Code Online (Sandbox Code Playgroud)

perl user-interface tcl button tkx

5
推荐指数
1
解决办法
853
查看次数

如何获取要在Tkx标签中使用的字符串的"宽度"

我正在使用Perl Tkx创建一个简单的应用程序,并允许用户选择一个目录.而不是使用文本包装或将框拉伸到荒谬的长度来显示整个目录名称,如果名称太长,我想截断它并将"..."追加到最后.

问题是标签的宽度被定义为某个任意值(如40).如果这个值是标签可以容纳多少个字符的度量,我可以将字符串截断为37并附加"...",但似乎并非如此.

有谁知道-width使用Perl Tkx的标签实际上是什么?我怎样才能找到-width我的字符串占用的单位数量,这样我就可以找出适当的点来截断它的位置?


编辑:

我在tcl手册中找到了这个答案:

数据库类:宽度指定标签的所需宽度.如果标签中正在显示图像或位图,则该值以屏幕为单位(即Tk_GetPixels可接受的任何形式); 对于文本,它是字符.

如果未指定此选项,则标签的所需宽度将根据图像或位图或其中显示的文本的大小计算.

这应该意味着对于40的宽度来截断文本我应该只需要将字符串截断为37个字符并添加"...".

我通过用所有"M"填充标签来测试这一点.我使用字母"M",因为它通常是最宽的字符(见这里).我编写的代码截断为37"M"并在末尾添加"...",但"M"似乎在大约24"M"之后溢出标签的末尾.

这意味着假设它只是拉伸标签以适应最宽的角色40这是不安全的...因此我的问题仍然没有答案.

如何确定字符串的"宽度",以便我可以适当地截断它?


EDIT2:

我找到了一个解决方法,但它仍然不是我想要的解决方案.如果将标签上的文本更改为固定宽度字体,它将正常工作.它看起来不太好看,所以我真的很喜欢适用于非固定宽度字体的解决方案.

string perl user-interface truncate tkx

4
推荐指数
1
解决办法
548
查看次数

尝试从使用tkx(Tcl/tk)的Perl脚本创建独立应用程序

以下是我的规格:OS X Tiger Perl 5.8使用捆绑了ActiveTcl v8.5的Tkx

我已经使用PAR/pp成功创建了具有上述配置的独立应用程序,但它不是一个完全令人满意的解决方案:

  • 仍然需要安装Tcl/Tk
  • 在带有默认菜单的Tcl/Tk窗口中打开
  • 每次运行应用程序时都会打开终端

是否有其他途径可以绕过这些问题?

perl par tkx

2
推荐指数
1
解决办法
1964
查看次数

我是否总是必须提供Tkx的-command参数作为匿名子程序?

我发现在指定-commandTkx小部件的参数时,我必须匿名包装已定义的子例程,这有点奇怪.

TkDocs教程的摘录证明了这一点:

my $cb = $frm->new_ttk__button ( -text => "Calculate",
                                 -command => sub {calculate();}  );

sub calculate {
   $meters = int(0.3048*$feet*10000.0+.5)/10000.0 || '';
}
Run Code Online (Sandbox Code Playgroud)

为什么当我写不它的工作-command => &calculate()还是-command => \&calculate()

perl subroutine tkx

2
推荐指数
1
解决办法
381
查看次数

标签 统计

perl ×6

tkx ×6

user-interface ×4

tcl ×2

button ×1

ide ×1

par ×1

string ×1

subroutine ×1

tk-toolkit ×1

truncate ×1