RubyとPythonのtkでリストビューを作ってみました。
■Rubyの例
# coding: utf-8
require 'tk'
$tree = Tk::Tile::Treeview.new()
#列インデックスの作成
$tree['columns'] = ['1','2','3']
#各列の設定
$tree.column_configure("1", :width => 100)
$tree.column_configure('2', :width => 100, :anchor => 'center')
$tree.column_configure('3', :width => 100, :anchor => 'center')
# 各列のヘッダー設定(インデックス,テキスト)
$tree.heading_configure("1", :text => '日付')
$tree.heading_configure('2', :text => '内訳')
$tree.heading_configure('3', :text => '金額')
# レコードの作成
# 1番目の引数-配置場所(ツリー形式にしない表設定ではブランクとする)
# 2番目の引数-end:表の配置順序を最下部に配置
# (行インデックス番号を指定することもできる)
# 3番目の引数-values:レコードの値をタプルで指定する
$tree.insert('', 'end', :values => ["2017/5/1","食費",3500])
$tree.insert('', 'end', :values => ["2017/5/10","光熱費",7800])
$tree.insert('', 'end', :values => ["2017/5/10","住宅費",64000])
#表スタイルの設定
$tree["show"] = "headings" #表示をlistviewにする
#画面表示
$tree.pack()
Tk.mainloop
■Rubyの例(選択行の検出)
# coding: utf-8
require 'tk'
#呼び出し関数 選択した行を表示
def select_record()
# 選択行の判別
record_id = $tree.focus_item()
# 選択行のレコードを取得
record_values = $tree.itemcget(record_id, 'values')
puts(record_values[0]) #選択した行を表示
end
$tree = Tk::Tile::Treeview.new()
#選択行を検出
$tree.bind("<TreeviewSelect>",proc{select_record})
#列インデックスの作成
$tree['columns'] = ['1','2','3']
#各列の設定
$tree.column_configure("1", :width => 100)
$tree.column_configure('2', :width => 100, :anchor => 'center')
$tree.column_configure('3', :width => 100, :anchor => 'center')
# 各列のヘッダー設定(インデックス,テキスト)
$tree.heading_configure("1", :text => '日付')
$tree.heading_configure('2', :text => '内訳')
$tree.heading_configure('3', :text => '金額')
# レコードの作成
# 1番目の引数-配置場所(ツリー形式にしない表設定ではブランクとする)
# 2番目の引数-end:表の配置順序を最下部に配置
# (行インデックス番号を指定することもできる)
# 3番目の引数-values:レコードの値をタプルで指定する
$tree.insert('', 'end', :values => ["2017/5/1","食費",3500])
$tree.insert('', 'end', :values => ["2017/5/10","光熱費",7800])
$tree.insert('', 'end', :values => ["2017/5/10","住宅費",64000])
#表スタイルの設定
$tree["show"] = "headings" #表示をlistviewにする
$tree.pack()
Tk.mainloop
■Pythonの例
import tkinter as tk
from tkinter import ttk
def select_record(event):
# 選択行の判別
record_id = tree.focus()
# 選択行のレコードを取得
record_values = tree.item(record_id, 'values')
print(record_values[1])
tree.delete(record_id)
# 列の識別名を指定
column = ('ID', 'Name', 'Score')
# メインウィンドウの生成
root = tk.Tk()
root.title('List')
root.geometry('400x300')
# Treeviewの生成
tree = ttk.Treeview(root, columns=column)
tree.bind("<<TreeviewSelect>>", select_record)
# 列の設定
tree.column('#0',width=0, stretch='no')
tree.column('ID', anchor='center', width=80)
tree.column('Name',anchor='w', width=100)
tree.column('Score', anchor='center', width=80)
# 列の見出し設定
tree.heading('#0',text='')
tree.heading('ID', text='ID',anchor='center')
tree.heading('Name', text='Name', anchor='w')
tree.heading('Score',text='Score', anchor='center')
# レコードの追加
tree.insert(parent='', index='end', iid=0 ,values=(1, 'RUBY',80))
tree.insert(parent='', index='end', iid=1 ,values=(2,'PYTHON', 90))
tree.insert(parent='', index='end', iid=2, values=(3,'C++', 45))
tree.insert(parent='', index='end', iid=3, values=(4,'C#', 60))
tree.insert(parent='', index='end', iid=4, values=(5,'Java', 99))
# ウィジェットの配置
tree.pack(pady=10)
root.mainloop()