- 论坛徽章:
- 0
|
把$table->Label改为$table->Entry 即可以编辑并保存数据:
- #!/usr/bin/perl -w
- use Tk;
- use Tk::Table;
- use strict;
- my $mw = MainWindow->new;
- $mw->geometry("475x125");
- $mw->resizable(0,0);
- $mw->title("Table Example");
- my $table_frame = $mw->Frame()->pack();
- my $table = $table_frame->Table(-columns => 8,
- -rows => 4,
- -fixedrows => 1,
- -scrollbars => 'oe',
- -relief => 'raised');
-
- my @onerow =("c1","c2","c3","c4","c5","c6","c7","c8",);
-
- my @value = ([@onerow],[@onerow],[@onerow],[@onerow],[@onerow],[@onerow],[@onerow],[@onerow],);
- $value[3][4] = "red";
- $value[7][7] = "blue";
- foreach my $col (0 .. 7)
- {
- my $tmp_label = $table->Label(-text => "COL ".$col, -width => 8, -relief =>'raised');
- $table->put(0, $col, $tmp_label);
- }
- foreach my $row (1 .. 7)
- {
- foreach my $col (0 .. 7)
- {
- my $tmp_Entry = $table->Entry(-textvariable => \$value[$row][$col],
- #-padx => 2,
- #-anchor => 'w',
- -width => 8,
- -background => 'white',
- -relief => "groove");
- $table->put($row, $col, $tmp_Entry);
- }
- }
- $table->pack();
- print "$value[3][4]\n";
- my $button_frame = $mw->Frame( -borderwidth => 4 )->pack();
- $button_frame->Button(-text => "Exit", -command => sub {exit})->pack();
- $button_frame->Button(-text => "Print[3][4]",
- -command => sub {
- print "$value[3][4]\n";#手动把red改为 blue
- #点击按钮可见值已经修改
- #$table->see(3,4);#该方法cpan 网站未做说明
- }
- )->pack();
- MainLoop;
- exit;
- #以下是cpan上的说明文字
- #
- # $table = $parent->Table(-rows => number,
- # -columns => number,
- # -scrollbars => anchor,
- # -fixedrows => number,
- # -fixedcolumns => number,
- # -takefocus => boolean);
- #
- # $widget = $table->Button(...);
- #
- # $old = $table->put($row,$col,$widget);
- # $old = $table->put($row,$col,"Text"); # simple Label
- # $widget = $table->get($row,$col);
- #
- # $cols = $table->totalColumns;
- # $rows = $table->totalRows;
- #
- # $table->see($widget);
- # $table->see($row,$col);
- #
- # ($row,$col) = $table->Posn($widget);
- #Tk::Table is an all-perl widget/geometry manager which allows a two dimensional table of arbitary perl/Tk widgets to be displayed.
- #
- #Entries in the Table are simply ordinary perl/Tk widgets. They should be created with the Table as their parent. Widgets are positioned in the table using:
- # $table->put($row,$col,$widget)
- #
- #If $widget is not a reference it is treated as a string, and a Lable widget is created with the string as its text.
- #
- #All the widgets in each column are set to the same width - the requested width of the widest widget in the column. Likewise, all the widgets in each row are set to the same height - the requested height of the tallest widget in the column.
- #
- #A number of rows and/or columns can be marked as 'fixed' - and so can serve as 'headings' for the remainder the rows which are scrollable.
- #
- #The requested size of the table as a whole is such that the number of rows specified by -rows (default 10), and number of columns specified by -columns (default 10) can be displayed.
- #
- #If the Table is told it can take the keyboard focus then cursor and scroll keys scroll the displayed widgets.
- #
- #-scrollbars. By default, scrollbars will be added nw. To disable scrollbars, set -scrollbars to an empty string:
- # $table = $parent->Table(-scrollbars => '', ...);
- #
- #The table can be emptied using
- # $table->clear
- #
- #the widgets which were in the table are destroyed.
- #
- #The Tk::Table widget is derived from a Tk::Frame, so inherits all its configure options.
- #
- #The default focus traversal is giving the focus only to the table widget as a whole. To enable focus traversal into table cells (e.g. if there are embedded entry widgets), then the option -takefocus has to be set to 0.
- #
- #BUGS / Snags / Possible enhancements ^
- #?Very large Tables consume a lot of X windows.
- #?No equivalent of pack's -anchor/-pad etc. options
复制代码 |
|