[Python Tkinter]: Inilah Yang Kita Tunggu Selama Ini…Tabel Python!

Halo PythonMania, apa kabar hari ini?
Pada episode artikel spesial kali ini, kita akan membuat sebuah aplikasi GUI sederhana dengan Python. Dan yang akan kita gunakan adalah komponen Tkinter yang sangat SPESIAL yaitu Tabel. Mengapa sangat spesial? Karena sejak lama, kami menunggu datangnya komponen Tabel versi Tkinter ini.

tabel-python-www.icesoft.org

Sebenarnya jika kita menggunakan GUI toolkit seperti PyGTK, wxPython, atau PyQT, komponen Tabel sudah mereka sediakan. Di PyGTK disebut Treeview, di WxPython disebut Grid, dan di PyQT disebut QTable. Di Tkinter sendiri disebut Treeview (termasuk dalam paket ttk, sudah termasuk dalam paket Python 2.7 atau Python 3.x). Saat ini, paket ttk dapat kita install ke Python 2.7 ke bawah (googling aja ya..hehe). Kebetulan kami menggunakan Python 2.6 dan alhamdulillah bisa bermain dengan ttk terutama komponen tabelnya (Treeview). So…Langsung ke TeKaPe aja ya!

Paket ttk merupakan paket pengembangan dari Tkinter. Untuk menggunakannya, kita harus melakukan import paket dahulu.

# pada versi Python 2.x
import ttk

# pada versi Python 3.x
import tkinter.ttk

Pada program kita kali ini, kita akan membuat tampilan data mahasiswa dengan menggunakan komponen Treeview. Program ini hanya menyimpan data mahasiswa pada sebuah List. Berikut detail programnya,

Komponen Tkinter: Frame, Label, Scrollbar, Treeview
Kode Program:

# file: tabel_ttk.py
# Deskripsi: menampilkan tabel sederhana dengan menggunakan
#            komponen Treeview (ttk)
#
# Python ver. 2.6
# Sistem Operasi: Debian 6 (squeeze)
# Tgl pembuatan: 2 Januari 2013 at 21.32 WIB
# Penulis: KlinikPython.wordpress.com
#

from Tkinter import *
import ttk

# judul dan isi tabel
judul_kolom = ("NAMA LENGKAP", "KOTA ASAL", "JURUSAN")
data_mhs = [
		('Biggie Noviandi', 'Malang', 'Fisika'),
		('Fahmi Zulkifli', 'Surabaya', 'Manajemen'),
		('Dodit Rahayu', 'Madiun', 'Teknik Mesin'),
		('Hasyim Ashari', 'Nganjuk', 'Kimia'),
		('Utus Wahyudi', 'Jember', 'Bahasa Inggris')
		]


class DemoTabelMHS:
	def __init__(self, induk, judul):
		self.induk = induk
		
		self.induk.title(judul)
		self.induk.protocol("WM_DELETE_WINDOW", self.Tutup)
		self.induk.resizable(False, False)
		
		self.aturKomponen()
		self.isiTabel()
		
	def aturKomponen(self):
		# buat frame utama
		mainFrame = Frame(self.induk)
		mainFrame.pack(fill=BOTH, expand=YES)
		
		# buat frame untuk tabel beserta scrollbar-nya
		fr_data = Frame(mainFrame, bd=10)
		fr_data.pack(fill=BOTH, expand=YES)
		
		# buat tabel dengan Treeview
		self.trvTabel = ttk.Treeview(fr_data, columns=judul_kolom, 
				show='headings')
		
		# buat scrollbar
		sbVer = Scrollbar(fr_data, orient='vertical', 
				command=self.trvTabel.yview)
		sbHor = Scrollbar(fr_data, orient='horizontal', 
				command=self.trvTabel.xview)
		# pasang dengan layout manager pack()		
		sbVer.pack(side=RIGHT, fill=Y)
		sbHor.pack(side=BOTTOM, fill=X)
		self.trvTabel.pack(side=LEFT, fill=BOTH)
			
		# buat statusbar
		lblStatus = Label(mainFrame, 
				text='www.KlinikPython.wordpress.com', bd=1, relief=SUNKEN)
		lblStatus.pack(side=BOTTOM, fill=X)
		
	def isiTabel(self):
		# isi judul tabel
		for kolom in judul_kolom:
			self.trvTabel.heading(kolom, text=kolom)
					
		# isi data tabel
		for dat in data_mhs:
			self.trvTabel.insert('', 'end', values=dat)
		
	def Tutup(self, event=None):
		self.induk.destroy()
		
if __name__ == '__main__':
	root = Tk()
	
	app = DemoTabelMHS(root, ":: Demo Tabel Mahasiswa ::")
	
	root.mainloop()

Tampilan Program:

Tampilan Program Demo Tabel Mahasiswa dengan Treeview.

Tampilan Program Demo Tabel Mahasiswa dengan Treeview.

Woke…Semoga Bermanfaat dan Salam PythonMania!

9 comments

    1. Salam kenal buat @candragatii

      untuk mencetak ke printer dengan Python memang penuh tantangan…hehe. Ada beberapa cara, yaitu:
      1) menggunakan paket win32 (kalo berjalan di Windows, sudah satu paket dengan PythonWin)
      2) menggunakan paket reportlab (ubah dulu ke pdf)
      3) menggunakan modul os.system (fungsi lpr, berjalan di Linux)

      Lebih detailnya langsung aja klik di sini.

  1. maaf mas,bisa dijelasin gak untuk print dengan modul os.system.atau contoh script yg menggunakan modul os.system untuk print reportnya.mau bikin program database dekstop tp masih mentok di pembuatan reportnya.
    terima kasih.

    1. Untuk pembuatan report di Python, hasil pengamatan kami lebih mudah menggunakan reportlab. Kalo menggunakan win32 atau wxPython, lumayan mantap puyeng-nya…(maklum admin masih gagal paham…:D).

      Salam PythonMania!

  2. data_mhs = [
    (‘Biggie Noviandi’, ‘Malang’, ‘Fisika’),
    (‘Fahmi Zulkifli’, ‘Surabaya’, ‘Manajemen’),
    (‘Dodit Rahayu’, ‘Madiun’, ‘Teknik Mesin’),
    (‘Hasyim Ashari’, ‘Nganjuk’, ‘Kimia’),
    (‘Utus Wahyudi’, ‘Jember’, ‘Bahasa Inggris’)
    ]

    itu tipe data apa yaa.. list atau dictionary?

  3. Traceback (most recent call last):
    File “C:\Python34\begin notepad.py”, line 11, in
    sbVer = Scrollbar(fr_data, orient=’vertical’,
    NameError: name ‘fr_data’ is not defined

    Saya pakai versi 3.4.3, ada cara lain ga bang?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s