Насколько я знаю, стандартный виджет со списком поддерживает только одну строку строки в качестве содержимого.Не расстраивайтесь, потому что мы можем легко создать более мощный список, который МОЖЕТ содержать виджеты!
Вот некоторые коды, которые я написал для программы.И результат подобен картинке, показанной ниже (я рисую ее, поэтому я беру ее непосредственно из соответствующего документа)
СОВЕТЫ:
- код, который я написал, написан на Perl с использованием Tcl:Модуль Tk, так что вы можете легко изменить его на Perl / Tk
. Как показано на рисунке, 6 виджетов создают массив @item, а 6 массивов @item - массив @cur_items, и вы можете начать с @cur_items для поиска любого виджета в этом списке (как вы уже знаете последовательность)
- я использую дополнительные кадры, чтобы сделать эти виджеты аккуратными, вы можете игнорировать их, если хотите организовать только два виджета (но я предлагаю использоватьframe)
- Пожалуйста, не обращайте внимания на имя виджета, например subsubwidget или subsubdate, кодерам сложно давать хорошие имена под большим давлением программирования:)
# init - create six items
# each of them contains 5 widgets
for (1..6) {
my @items = ();
# create a frame for each item
# 0 --- LabelFrame --- file name
# 1 --- label --- icon
# 2 --- text --- path dir
# 3 --- label --- date
# 4 --- label --- size
# 5 --- button --- preview info
my $item = $toplevel->Frame(
-bg => 'white',
)->pack(
-in => $toplevel,
-anchor => 'nw',
-pady => 10,
);
my $widget = $item->LabelFrame(
-bg => 'white',
-fg => 'blue',
)->pack(
-in => $item,
-side => 'left',
-anchor => 'nw',
);
push (@items, $widget);
# file/dire type icon
my $subicon = $widget->Label(
-bg => 'white',
);
$subicon->pack(
-in => $widget,
-side => 'left',
-anchor => 'center'
);
push (@items, $subicon);
my $subwidget = $widget->Frame(
-bg => 'white',
)->pack(
-in => $widget,
-side => 'left',
);
# file path
my $subtext = $subwidget->Text(
-height => 2,
-width => 39,
-bg => 'white',
-borderwidth => 0,
-wrap => 'char',
)->pack(
-in => $subwidget,
-anchor => 'nw',
);
push (@items, $subtext);
$subtext->configure(-state => 'disabled');
# date and size
my $subsubwidget = $subwidget->Frame(
-bg => 'white',
)->pack(
-in => $subwidget,
-anchor => 'nw',
);
my $subsubdate = $subsubwidget->Label(
-bg => 'white',
-text => '',
)->pack(
-in => $subsubwidget,
-anchor => 'nw',
-side => 'left',
);
push (@items, $subsubdate);
my $subsubsize = $subsubwidget->Label(
-width => 12,
-bg => 'white',
)->pack(
-in => $subsubwidget,
-anchor => 'nw',
-side => 'left',
);
push (@items, $subsubsize);
# more info
my $infobtn = $item->Button(
-text => '>',
-width => 0,
-height => 4,
-padx => 0,
-pady => 0,
-relief => 'flat',
-bg => 'white',
)->pack(
-in => $item,
-side => 'left',
-anchor => 's',
);
push (@items, $infobtn);
# record created widget
push (@cur_items, \@items);
}
# end of init