Pilih Mana Jokowi-JK atau Prabowo-Hatta?

Semangat Pagi, PythonMania!…I Love U All… :D

Info Penting!
Jadwal Pemilu 2014 akan dilaksanakan dua kali yaitu Pemilu Legislatif pada tanggal 9 April 2014 yang akan memilih para anggota dewan legislatif dan Pemilu Presiden pada tanggal 9 Juli 2014 yang akan memilih Presiden dan Wakil Presiden (disadur dari pemilu.com). Pemilu legislatif telah lewat, saatnya kita mempersiapkan diri dalam pemilu PRESIDEN. Dan seperti yang telah kita ketahui, Pemilu tahun 2014 ini akan diikuti oleh 2 pasangan yaitu Jokowi-JK dan Prabowo-Hatta. Sudah mantapkah pilihan Anda?

Agar memantapkan pilihan Anda, Klinik Python sudah mempersiapkan sebuah aplikasi Vote Presiden 2014 menggunakan bahasa Pemrograman Python. Saatnya latihan Nyoblos…Ups, salah!..Saatnya Latihan nge-Klik!… :D

Pilih Jokowi-Jk atau Prabowo-Hatta?

Pilih Jokowi-Jk atau Prabowo-Hatta?

Demo program Vote Presiden 2014 menggunakan file teks dalam mode simpan dan baca data hasil vote. Pembahasan tentang file teks bisa Anda pelajari di Manajemen File: bagian 1 dan bagian 2.

[KODE PROGRAM]

# file: votepresiden.py
#
# Deskripsi: Demo Vote Presiden RI 2014
#       (aplkasi GUI berbasis file.)
#
# Versi Python  : 2.7
# Tgl Dibuat    : 24 Mei 2014 06.08 AM
# Dibuat oleh   : Klinik Python ID


from Tkinter import *
import os.path as osp
import os


class DemoVotePresiden:
    def __init__(self, parent, title):
        self.parent = parent

        self.aturWindow(title)
        self.aturKomponen()

        # set awal
        self.formLoad()

    def aturWindow(self, title):
        """
        Mengatur ukuran dan judul dari window utama. 
        """
        self.parent.geometry("600x450")
        self.parent.title(title)
        self.parent.protocol("WM_DELETE_WINDOW", self.onKeluar)

    def aturKomponen(self):
        """
        Mengatur komponen dalam window utama.
        """
        # mainFrame
        mainFrame = Frame(self.parent, bd=10)
        mainFrame.pack(fill=BOTH, expand=YES)

        # set label
        Label(mainFrame, text='Ayo, Tentukan Pilihanmu Sekarang!',
              font=('Arial', 20, 'bold')).pack(fill=X)
        Label(mainFrame, text='(Klik Pada Gambar Pasangan Calon! Jangan di COBLOS!)',
              font=('Arial', 10, 'bold'), fg='red').pack(fill=X)

        # set frame-tombol
        fr_tombol = Frame(mainFrame)
        fr_tombol.pack(expand=YES, pady=10)

        # pasang btn pilihan1
        self.imgJokowi = PhotoImage(file='jokowi-jk.gif')
        self.btnJokowi = Button(fr_tombol, text='Jokowi - JK', image=self.imgJokowi,
                                compound='top', command=self.onPilihJokowi)
        self.btnJokowi.pack(side=LEFT, padx=10)

        # pasang btn pilihan2
        self.imgPrabowo = PhotoImage(file='prabowo-hatta.gif')
        self.btnPrabowo = Button(fr_tombol, text='Prabowo - Hatta', image=self.imgPrabowo,
                                compound='top', command=self.onPilihPrabowo)
        self.btnPrabowo.pack(side=LEFT, padx=10)

        # label hasil vote
        self.lblVoteVar = StringVar()
        self.lblVoteVar.set("Jokowi - JK : 0   <-HASIL VOTE-> Prabowo - Hatta : 0")
        Label(mainFrame, textvariable=self.lblVoteVar, fg='blue', font=('Times New Roman', 16, 'bold')).pack(fill=X, pady=10)

        # tombol keluar
        self.imgExit = PhotoImage(file='exit.gif')
        self.btnKeluar = Button(mainFrame, text=' Keluar', image=self.imgExit, compound='left',
                                command=self.onKeluar, width=80)
        self.btnKeluar.pack()

    def onPilihJokowi(self, event=None):
        """
        Label hasil vote Jokowi-JK akan langsung berubah (bertambah 1) setiap kali gambar pasangan
            calon presiden tersebut di Klik.
        """
        self.vote1 += 1
        self.lblVoteVar.set("Jokowi - JK : %i   <-HASIL VOTE-> Prabowo - Hatta : %i" %(
            self.vote1, self.vote2))

    def onPilihPrabowo(self, event=None):
        """
        Label hasil vote Prabowo-Hatta akan langsung berubah (bertambah 1) setiap kali gambar pasangan
            calon presiden tersebut di Klik.
        """
        self.vote2 += 1
        self.lblVoteVar.set("Jokowi - JK : %i   <-HASIL VOTE-> Prabowo - Hatta : %i" %(
            self.vote1, self.vote2))

    def formLoad(self):
        """
        Mengecek apakah file datavote.dat sudah ada. Jika belum maka akan dibuat file baru.
            Jika ternyata file datavote.dat sudah ada, maka data hasil vote akan dibaca terbelih dahulu.
            Kemudian file datavote.data akan dihapus dan dibuat lagi file datavote.dat yang baru (kosong).
        """
        namafile = 'datavote.dat'

        # os.path.exists() --> berfungsi untuk mencek keberadaan suatu file
        # hasil: 1 (=ada) atau 0 (=tidak ada)
        if osp.exists(namafile):
            self.file_vote = open(namafile, 'r')

            dataVote = self.file_vote.readlines()
            self.vote1 = int(dataVote[0].split('-')[0])
            self.vote2 = int(dataVote[0].split('-')[1])
            self.file_vote.close()

            self.lblVoteVar.set("Jokowi - JK : %i   <-HASIL VOTE-> Prabowo - Hatta : %i" %(
                self.vote1, self.vote2))
            
            # hapus  + buat file baru
            # os.remove() --> berfungsi untuk menghapus file
            os.remove(namafile)
            self.file_vote = open(namafile, 'w')
            
        else:
            self.vote1 = 0
            self.vote2 = 0

            # buat file baru
            self.file_vote = open(namafile, 'w')

    def onKeluar(self, event=None):
        """
        Menyimpan data hasil vote pada sebuah fila: datavote.dat.
            Kemudian file datavote.dat dan window utama di tutup.
        """
        datVote = (self.vote1, self.vote2)
        self.file_vote.writelines('%i-%i'%(datVote))
        self.file_vote.close()    

        self.parent.destroy()

if __name__ == '__main__':
    root = Tk()

    app = DemoVotePresiden(root, ":: Demo Vote Presiden RI 2014 ::")

    root.mainloop()

[DOWNLOAD]
Demo Vote Presiden 2014

Woke!…Semoga Bermanfaat dan Salam PythonMania!

About these ads

3 comments

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