加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl/TKx 常用窗口控件

发布时间:2020-12-16 00:18:25 所属栏目:大数据 来源:网络整理
导读:1. 创建提示框: Tkx::tk___messageBox(-type = "yesno",-message = "Are you sure you want to install SuperVirus?",-icon = "question",-title = "Install"); tk___messageBox的各个参数含义如下: type:提示框类型,显式的按钮有所不同。 ok (default)

1. 创建提示框:

Tkx::tk___messageBox(-type => "yesno",-message => "Are you sure you want to install SuperVirus?",-icon => "question",-title => "Install"
);

tk___messageBox的各个参数含义如下:

type:提示框类型,显式的按钮有所不同。

ok (default) "ok"

okcancel "ok" or "cancel"

yesno "yes" or "no"

yesnocancel "yes","no" or "cancel"

retrycancel "retry" or "cancel"

abortretryignore "abort","retry" or "ignore"

message: 提示框上显示的内容

detail: 用小一号字体显示的详细内容

title: 对话框的标题,Mac OS X不可用.

icon: 对话框的图标:"info" (default),"error","question"和"warning".

default: 指定默认focus的按钮

parent: 提示框窗口的父窗口,居中显示在父窗口上

2. 文件对话框很简单直接:

$filename = Tkx::tk___getOpenFile();
$filename = Tkx::tk___getSaveFile();
$dirname = Tkx::tk___chooseDirectory();

3. 窗口居中:从OverStack上Copy下来的函数,个人验证还是存在一些问题,并不是完全居中。?

sub CenterWindow {
    # Args: (0) window to center
    # (1) [optional] desired width
    # (2) [optional] desired height

    my ($window,$width,$height) = @_;

    Tkx::update('idletasks');
    $width  ||= Tkx::winfo('reqwidth',$window);
    $height ||= Tkx::winfo('reqheight',$window);

    my $x = int((Tkx::winfo('screenwidth',$window) / 2) - ($width / 2));
    my $y = int((Tkx::winfo('screenheight',$window) / 2) - ($height / 2));

    $window->g_wm_geometry($width . "x" . $height . "+" . $x . "+" . $y);
}

4. Frame

my $mw = Tkx::widget->new(".");
my $content = $mw->new_ttk__frame(-padding => "3 3 12 12");

5. 标签

my $hi = $content->new_ttk__label(-text => "Hi!");

6. 复选框,注意关联的变量是不同的

my $one = $content->new_ttk__checkbutton(-text => "One",-variable => $option_one,-onvalue => 1);
my $two = $content->new_ttk__checkbutton(-text => "Two",-variable => $option_two,-onvalue => 1);
my $three = $content->new_ttk__checkbutton(-text => "Three",-variable => $option_three,-onvalue => 1);

7. 单选框,关联变量是同一个

my $display1 = $content->new_ttk__radiobutton(-text => "Display 1",-variable => $display,-value => "DISPLAY1");
my $display2 = $content->new_ttk__radiobutton(-text => "Display 2",-value => "DISPLAY2");

控件的初始值又关联变量的初始值决定。

8. 下拉列表框

my $combo = $content->new_ttk__combobox(-textvariable => $city,-state => "readonly");
$combo->configure(-values => "Chengdu Shanghai");

-state参数表明下拉列表框是不可编辑的,只能选择。列表的值通过configure -values设置,空格作为每个选择项的分隔符。

9. 按钮

my $ok = $content->new_ttk__button(-text => "Okay",-command => sub {
    #...
});

10. 布局,每个控件都可以调用g_grid来通过网格进行布局。

$combo->g_grid(-column => 0,-row => 5,-columnspan => 3,-sticky => "ew",-pady => 10);
$content->g_grid_columnconfigure(1,-weight => 3);
$content->g_grid_rowconfigure(1,-weight => 1);
$content->g_pack;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读