Senin, 21 Desember 2009

[DAHSYATNYA TKINTER] :: Program Grafik Sinus



Inilah cara termudah untuk membuat grafik sinus di Python. Pada program ini kita menggunakan Tkinter (defaultnya Python) sebagai GUI-nya, widget-nya, kita gunakan Canvas, Frame, dan Button. Beberapa fungsi (modul) yang digunakan yaitu math (sinus dan pi) dan sys ...SALAM PYTHON DAHSYAT!



# latihan:: sinus.py
# masbiggie@jakarta, 21 Des 2009

from Tkinter import *
import sys
import math

class ProgramSinus(Frame):
def __init__(self):
Frame.__init__(self)
self.pack(padx=5, pady=5, fill='both', expand='yes')

# judul + ukuran window
self.master.title("Program Sinus")
self.master.geometry("640x480")

self.aturKomponen() # fungsi menyusun komponen
self.aturKejadian() # fungsi mengatur event

def aturKomponen(self):
# pasang widget canvas
self.canvas = Canvas(self, bg='white')
self.canvas.pack(side='top', fill='both', expand='yes')

# pasang panel (frame)
self.frame1 = Frame(self)
self.frame1.pack(side='bottom', pady=5)

# pasang tombol 'gambar' dan 'keluar'
self.gambar = Button(self.frame1, text='Gambar')
self.gambar.pack(side='left')
self.keluar = Button(self.frame1, text='Keluar')
self.keluar.pack(side='left')

def aturKejadian(self):
self.gambar.bind('', self.OnGambar)
self.keluar.bind('', self.OnKeluar)

def OnGambar(self, event):
x_awal = 0
y_awal = 0

self.canvas.create_line(50, 200, 600, 200, fill='red', width=2)

while (x_awal < 550):
x_baru = x_awal + 0.5
y_baru = 100 * math.sin(x_awal*math.pi/180)
self.canvas.create_line(round(50+x_awal), round(200-y_awal), round(50+x_baru), round(200-y_baru), width=2)
x_awal = x_baru y_awal = y_baru

def OnKeluar(self, event):
sys.exit()

def run(self):
self.mainloop()

if __name__ == '__main__':
app = ProgramSinus()
app.run()

Sabtu, 19 Desember 2009

[DAHSYATNYA PyGTK] :: Berpikir Enteng Cara PyGTK...


Gambar matematika.py

Sesuai dengan judul di atas, saya coba membuat program yang enteng-enteng aja. Yang jelas, saya menggunakan GUI pyGTK. OK!..gak usah lama-lama..ayo tancap gas!

Pada latihan ini, kita cukup menggunakan 4 widget(tool): Label, Button, Entry, dan HSeparator. Untuk pengaturan tata letak, kita gunakan VBox dan HBox. Untuk menjalankan program ini, kita harus memasukkan bilangan1 dan bilangan2 dulu, setelah itu kita bisa mengklik tombol '+', '-', 'x', '/'. Dan hasil operasi matematika akan dapat dilihat di kotak hasil. Jika ingin keluar, kita tinggal klik tombol keluar.

Saran: Menurut saya belajar program, lebih baik kita mulai dari mengetik listing kemudian kita pelajari apa yang dimaksud di listing tersebut..SALAM PYTHON DAHSYAT!


# latihan: matematika.py
# Program matematika untuk penjumlahan, pengurangan, perkalian, dan pembagian
# masbiggie@07/12/09

import pygtk
pygtk.require('2.0')
import gtk

class Matematika(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
self.set_title("Matematika Sederhana")
self.set_size_request(250, -1)
self.set_border_width(10)

self.aturKomponen()
self.aturKejadian()

self.hasil = 0.0

self.show_all()

def aturKomponen(self):
vbox = gtk.VBox(False, 5)
self.add(vbox)

self.bil1 = gtk.Label("Bilangan 1:")
self.bil1.set_alignment(0.0, 0.5)
vbox.pack_start(self.bil1)
self.edit1 = gtk.Entry()
vbox.pack_start(self.edit1)
self.bil2 = gtk.Label("Bilangan 2:")
self.bil2.set_alignment(0.0, 0.5)
vbox.pack_start(self.bil2)
self.edit2 = gtk.Entry()
vbox.pack_start(self.edit2)

hbox = gtk.HBox()
vbox.pack_start(hbox)

self.tam = gtk.Button("+")
hbox.pack_start(self.tam)
self.kur = gtk.Button("-")
hbox.pack_start(self.kur)
self.kal = gtk.Button("x")
hbox.pack_start(self.kal)
self.bag = gtk.Button("/")
hbox.pack_start(self.bag)

self.hasil = gtk.Label("Hasil Operasi Matematika:")
vbox.pack_start(self.hasil)
self.edithasil = gtk.Entry()
vbox.pack_start(self.edithasil)

# tombol Keluar
self.sep = gtk.HSeparator()
vbox.pack_start(self.sep)

hbox2 = gtk.HBox()
vbox.pack_start(hbox2, False, False)

self.keluar = gtk.Button("Keluar")
self.keluar.set_size_request(75, -1)
hbox2.pack_end(self.keluar, False, False)

def aturKejadian(self):
self.connect("destroy", self.OnKeluar)

self.keluar.connect("clicked", self.OnKeluar)

self.tam.connect("clicked", self.OnTambah)
self.kur.connect("clicked", self.OnKurang)
self.kal.connect("clicked", self.OnKali)
self.bag.connect("clicked", self.OnBagi)

def bacaData(self):
self.nilai1 = float(self.edit1.get_text())
self.nilai2 = float(self.edit2.get_text())

def OnTambah(self, event):
self.edithasil.set_text("")
self.bacaData()

self.hasil = self.nilai1 + self.nilai2

self.edithasil.set_text("%.2f + %.2f = %.2f" %(self.nilai1, self.nilai2, self.hasil))

def OnKurang(self, event):
self.edithasil.set_text("")
self.bacaData()

self.hasil = self.nilai1 - self.nilai2

self.edithasil.set_text("%.2f - %.2f = %.2f" %(self.nilai1, self.nilai2, self.hasil))

def OnKali(self, event):
self.edithasil.set_text("")
self.bacaData()

self.hasil = self.nilai1 * self.nilai2

self.edithasil.set_text("%.2f x %.2f = %.2f" %(self.nilai1, self.nilai2, self.hasil))

def OnBagi(self, event):
self.edithasil.set_text("")
self.bacaData()

if (self.nilai2 == 0.0):
self.edithasil.set_text("Terjadi Pembagian dengan Nol")
else:
self.hasil = self.nilai1 / self.nilai2

self.edithasil.set_text("%.2f / %.2f = %.2f" %(self.nilai1, self.nilai2, self.hasil))

def OnKeluar(self, event):
gtk.main_quit()

def run(self):
gtk.main()

if __name__ == '__main__':
aplikasi = Matematika()
aplikasi.run()



Download:: matematika.py

Kamis, 08 Oktober 2009

Duel GUI Python -- wxPython, pyGTK, Tkinter --


-- wxPython --


-- pyGTK --


-- Tkinter --


# contoh program GUI sederhana dengan Tkinter
#
# masbiggie@malang, 5 Oktober 2009

import Tkinter

class PesanFrame(Tkinter.Frame):
def __init__(self, parent=None):
Tkinter.Frame.__init__(self, parent)
self.pack(padx=10, pady=10, fill='both', expand='yes')
self.master.title("Program GUI dengan Tkinter")
self.master.geometry("300x100")

self.aturKomponen()

def aturKomponen(self):
self.edit = Tkinter.Entry(self)
self.edit.pack(side='top', fill='x')

self.tombolBox = Tkinter.Frame(self)
self.tombolBox.pack(side='top', pady=10, fill='x')

self.klik = Tkinter.Button(self.tombolBox, text="Klik...",
command=self.OnKlik)
self.klik.pack(side='left', fill='x', expand='yes')
self.keluar = Tkinter.Button(self.tombolBox, text="Keluar",
command=self.OnKeluar)
self.keluar.pack(side='left', fill='x', expand='yes')

def OnKlik(self, event=None):
self.edit.delete(0, 'end')
self.edit.insert(0, "Inilah Tkinter...Mau?")

def OnKeluar(self, event=None):
self.quit()

if __name__ == '__main__':
frame = PesanFrame()
frame.mainloop()



# contoh program GUI sederhana dengan pyGTK
#
# masbiggie@malang, 5 Oktober 2009

import gtk

class PesanFrame:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_title("Program GUI dengan pyGTK")
self.window.set_size_request(300, 100)
self.window.set_border_width(10)

self.aturKomponen()
self.aturKejadian()

def aturKomponen(self):
vbox = gtk.VBox(False, 10)
self.window.add(vbox)

self.edit = gtk.Entry()
vbox.pack_start(self.edit, True, True, 0)

hbox = gtk.HBox(True, 0)
vbox.pack_start(hbox, True, True, 0)

self.klik = gtk.Button("Klik...")
hbox.pack_start(self.klik, True, True, 0)
self.keluar = gtk.Button("Keluar")
hbox.pack_start(self.keluar, True, True, 0)

self.window.show_all()

def aturKejadian(self):
self.window.connect("destroy", gtk.main_quit)

self.klik.connect("clicked", self.OnKlik)
self.keluar.connect_object("clicked", gtk.Widget.destroy,
self.window)

def OnKlik(self, widget):
self.edit.set_text("")
self.edit.set_text("Inilah pyGTK...Mau?")


if __name__ == '__main__':
frame = PesanFrame()
gtk.main()



# contoh program GUI sederhana dengan wxPython
#
# masbiggie@malang, 5 Oktober 2009

import wx

class PesanFrame(wx.Frame):
def __init__(self, parent=None):
wx.Frame.__init__(self, parent, -1,
"Program GUI dengan wxPython",
size=(300, 100))

self.aturKomponen()
self.aturKejadian()

def aturKomponen(self):
self.panel = wx.Panel(self, -1)

self.edit = wx.TextCtrl(self.panel, -1, "")
self.klik = wx.Button(self.panel, -1, "Klik...")
self.keluar = wx.Button(self.panel, -1, "Keluar")

tombolBox = wx.BoxSizer(wx.HORIZONTAL)
tombolBox.Add(self.klik, 1, wx.EXPAND|wx.ALL)
tombolBox.Add(self.keluar, 1, wx.EXPAND|wx.ALL)

mainSizer = wx.BoxSizer(wx.VERTICAL)
mainSizer.Add(self.edit, 0, wx.EXPAND|wx.ALL, 10)
mainSizer.Add(tombolBox, 0,
wx.EXPAND|wx.BOTTOM|wx.RIGHT|wx.LEFT, 10)

self.panel.SetSizer(mainSizer)

def aturKejadian(self):
self.Bind(wx.EVT_BUTTON, self.OnKlik, self.klik)
self.Bind(wx.EVT_BUTTON, self.OnKeluar, self.keluar)

def OnKeluar(self, event):
self.Close()

def OnKlik(self, event):
self.edit.SetValue("")
self.edit.SetValue("Inilah wxPython..Mau?")

if __name__ == '__main__':
app = wx.PySimpleApp()

frame = PesanFrame()
frame.Show()

app.MainLoop()




OK..silahkan pilih..Anda suka mana?