从Ruby中的TK :: Tile :: Treeview中检索第一列值

时间:2018-04-25 16:14:38

标签: ruby tk

我尝试使用“item.get(”#0“)”检索从树视图中检索到的项目中第一列的值“但是我收到此错误”RuntimeError:无法设置显示列#0“。此方法适用于其他列。 任何人都可以帮忙找出解决方案吗?

此致 马克

这是一个独立的示例代码:

require 'tk'
require 'tkextlib/tile'
$root = TkRoot.new
$frame = Tk::Tile::Frame.new($root)
$tree = Tk::Tile::Treeview.new($frame)

$tree['columns'] = ['action_text','action_description']
$tree.column_configure("#0", :width => 100)
$tree.heading_configure("#0", :text => 'la 1er colonne')
$tree.column_configure('action_text', :width => 100, :anchor => 'center')
$tree.heading_configure('action_text', :text => 'Text')

$tree.column_configure('action_description', :width => 100, :anchor => 'w')
$tree.heading_configure('action_description', :text => 'Description')

# Inserted at the root, program chooses id:
$tree.insert('', 'end', :id => 'widgets', :text => 'Widget Tour')

# Same thing, but inserted as first child:
$tree.insert('', 0, :id => 'gallery', :text => 'Applications')

# Treeview chooses the id:
item = $tree.insert('', 'end', :text => 'Tutorial')

# Inserted underneath an existing node:
$tree.insert( 'widgets', 'end', :text => 'Canvas')
$tree.insert( item, 'end', :text => 'Tree')
$tree.insert('', 2, :text => 'tata')
$tree.insert('', 'end', :text => 'envolee', :values => ['le centre', 'la description'])

$frame.grid(:column => 0, :row => 0, :sticky => 'nsew') {padding "3 3 12 12"}
$tree.grid(:column => 0, :row => 0, :sticky => 'nsew')

TkGrid.columnconfigure($root, 0, :weight => 1)
TkGrid.rowconfigure($root, 0, :weight => 1)
TkGrid.columnconfigure($frame, 0, :weight => 1)
TkGrid.rowconfigure($frame, 0, :weight => 1)

def create_action
 item = $tree.selection_get[0]
 puts item
 puts "ID:" 
 puts item.id
 puts "Index:" 
 puts item.index
 puts "action_text:"
 puts item.get('action_text')
 puts "1:"
 puts item.get('#1')
 puts $tree.get(item.id, '#0')
 puts "0:"
 puts item.get("#0")
end

$tree.bind("Double-1") { create_action }
Tk.mainloop

1 个答案:

答案 0 :(得分:0)

我不知道我是否完全理解你想做什么,

item.text

可能是一个解决方案。