3
# -*- coding: utf-8 -*-
7
# Copyright 2013 Universitas Virtual Terbuka
10
# 1. http://code.google.com/p/calculator-using-pygtk
11
# 2. http://code.google.com/p/calculator-python-glade
12
# 3. http://zetcode.com/gui/pygtk/layout
13
# 4. http://www.vrsets.com/index.php?topic=25484.0
15
# Program ini buat pembelajaran di Universitas Virtual Terbuka
25
print("GTK Not Available")
30
license = """Kalkulator Saintifik UVT is free software; you can redistribute it
31
and/or modify it under the terms of the GNU General Public License(GPL v3)
32
as published by the Free Software Foundation.
34
Kalkulator Saintifik UVT is distributed in the hope that it will be useful,
35
but WITHOUT ANY WARRANTY; without even the implied warranty of
36
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
37
GNU General Public License for more details.
39
You should have received a copy of the GNU General Public License
40
along with Kalkulator Saintifik UVT; if not, write to the Free Software
41
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
42
MA 02110-1301, USA."""
44
authors = ["Raviyanto Ahmad <raviyanto@gmail.com>", "Rajeswari Seetharaman <sraji.me@gmail.com>",
45
"Jan Bodnar <vronskij@gmail.com>"]
49
self.jendela = gtk.Window(gtk.WINDOW_TOPLEVEL)
50
self.jendela.set_size_request(250, 365)
51
self.jendela.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color("#8A0886"))
52
self.jendela.set_resizable(True)
53
self.jendela.set_position(gtk.WIN_POS_CENTER)
54
self.jendela.set_border_width(5)
55
self.jendela.set_title("Kalkulator Saintifik UVT")
58
self.jendela.set_icon_from_file("/usr/share/kalkuluvtsains/gambar/kalkulatorsains.png")
68
self.jendela.show_all()
71
self.tombol_hapus = gtk.Button("CE")
72
self.tombol_kurung_buka = gtk.Button("(")
73
self.tombol_kurung_tutup = gtk.Button(")")
74
self.tombol_tutup = gtk.Button("Tutup")
76
self.tombol_tujuh = gtk.Button("7")
77
self.tombol_delapan = gtk.Button("8")
78
self.tombol_sembilan = gtk.Button("9")
79
self.tombol_bagi = gtk.Button("/")
81
self.tombol_empat = gtk.Button("4")
82
self.tombol_lima = gtk.Button("5")
83
self.tombol_enam = gtk.Button("6")
84
self.tombol_kali = gtk.Button("*")
86
self.tombol_satu = gtk.Button("1")
87
self.tombol_dua = gtk.Button("2")
88
self.tombol_tiga = gtk.Button("3")
89
self.tombol_kurang = gtk.Button("-")
91
self.tombol_nol = gtk.Button("0")
92
self.tombol_titik = gtk.Button(".")
93
self.tombol_sama_dengan = gtk.Button("=")
94
self.tombol_tambah = gtk.Button("+")
96
self.tombol_radians = gtk.Button("radians")
97
self.tombol_e = gtk.Button("e")
98
self.tombol_log = gtk.Button("log")
99
self.tombol_log10 = gtk.Button("log10")
101
self.tombol_degrees = gtk.Button("degrees")
102
self.tombol_pi = gtk.Button("pi")
103
self.tombol_sinh = gtk.Button("sinh")
104
self.tombol_cosh = gtk.Button("cosh")
106
self.tombol_tanh = gtk.Button("tanh")
107
self.tombol_sqrt = gtk.Button("sqrt")
108
self.tombol_asin = gtk.Button("asin")
109
self.tombol_acos = gtk.Button("acos")
111
self.tombol_atan = gtk.Button("atan")
112
self.tombol_sin = gtk.Button("sin")
113
self.tombol_cos = gtk.Button("cos")
114
self.tombol_tan = gtk.Button("tan")
117
self.papan_menu = gtk.MenuBar()
119
self.pilihan = gtk.Menu()
121
self.tentang = gtk.Menu()
123
self.keluar = gtk.MenuItem("Keluar")
125
self.pilihan.append(self.keluar)
127
self.keterangan = gtk.MenuItem("Keterangan")
129
self.tentang.append(self.keterangan)
131
self.pokok_pilihan = gtk.MenuItem("Berkas")
133
self.pokok_tentang = gtk.MenuItem("Ihwal")
135
self.pokok_pilihan.set_submenu(self.pilihan)
137
self.pokok_tentang.set_submenu(self.tentang)
139
self.papan_menu.append(self.pokok_pilihan)
141
self.papan_menu.append(self.pokok_tentang)
144
self.masukan_data = gtk.Entry()
145
self.x = self.masukan_data.get_text()
148
self.tabel_kalkulator = gtk.Table(rows = 9, columns = 4, homogeneous = True)
149
self.tabel_kalkulator.attach(self.tombol_hapus, 0, 1, 0, 1)
150
self.tabel_kalkulator.attach(self.tombol_kurung_buka, 1, 2, 0, 1)
151
self.tabel_kalkulator.attach(self.tombol_kurung_tutup, 2, 3, 0, 1)
152
self.tabel_kalkulator.attach(self.tombol_tutup, 3, 4, 0, 1)
154
self.tabel_kalkulator.attach(self.tombol_tujuh, 0, 1, 1, 2)
155
self.tabel_kalkulator.attach(self.tombol_delapan, 1, 2, 1, 2)
156
self.tabel_kalkulator.attach(self.tombol_sembilan, 2, 3, 1, 2)
157
self.tabel_kalkulator.attach(self.tombol_bagi, 3, 4, 1, 2)
159
self.tabel_kalkulator.attach(self.tombol_empat, 0, 1, 2, 3)
160
self.tabel_kalkulator.attach(self.tombol_lima, 1, 2, 2, 3)
161
self.tabel_kalkulator.attach(self.tombol_enam, 2, 3, 2, 3)
162
self.tabel_kalkulator.attach(self.tombol_kali, 3, 4, 2, 3)
164
self.tabel_kalkulator.attach(self.tombol_satu, 0, 1, 3, 4)
165
self.tabel_kalkulator.attach(self.tombol_dua, 1, 2, 3, 4)
166
self.tabel_kalkulator.attach(self.tombol_tiga, 2, 3, 3, 4)
167
self.tabel_kalkulator.attach(self.tombol_kurang, 3, 4, 3, 4)
169
self.tabel_kalkulator.attach(self.tombol_nol, 0, 1, 4, 5)
170
self.tabel_kalkulator.attach(self.tombol_titik, 1, 2, 4, 5)
171
self.tabel_kalkulator.attach(self.tombol_sama_dengan, 2, 3, 4, 5)
172
self.tabel_kalkulator.attach(self.tombol_tambah, 3, 4, 4, 5)
174
self.tabel_kalkulator.attach(self.tombol_radians, 0, 1, 5, 6)
175
self.tabel_kalkulator.attach(self.tombol_e, 1, 2, 5, 6)
176
self.tabel_kalkulator.attach(self.tombol_log, 2, 3, 5, 6)
177
self.tabel_kalkulator.attach(self.tombol_log10, 3, 4, 5, 6)
179
self.tabel_kalkulator.attach(self.tombol_degrees, 0, 1, 6, 7)
180
self.tabel_kalkulator.attach(self.tombol_pi, 1, 2, 6, 7)
181
self.tabel_kalkulator.attach(self.tombol_sinh, 2, 3, 6, 7)
182
self.tabel_kalkulator.attach(self.tombol_cosh, 3, 4, 6, 7)
184
self.tabel_kalkulator.attach(self.tombol_tanh, 0, 1, 7, 8)
185
self.tabel_kalkulator.attach(self.tombol_sqrt, 1, 2, 7, 8)
186
self.tabel_kalkulator.attach(self.tombol_asin, 2, 3, 7, 8)
187
self.tabel_kalkulator.attach(self.tombol_acos, 3, 4, 7, 8)
189
self.tabel_kalkulator.attach(self.tombol_atan, 0, 1, 8, 9)
190
self.tabel_kalkulator.attach(self.tombol_sin, 1, 2, 8, 9)
191
self.tabel_kalkulator.attach(self.tombol_cos, 2, 3, 8, 9)
192
self.tabel_kalkulator.attach(self.tombol_tan, 3, 4, 8, 9)
195
self.kotak_vertikal = gtk.VBox(spacing = 20)
197
self.kotak_horizontal_1 = gtk.HBox(spacing = 10)
198
self.kotak_horizontal_1.pack_start(self.papan_menu)
200
self.kotak_horizontal_2 = gtk.HBox(spacing = 10)
201
self.kotak_horizontal_2.pack_start(self.masukan_data)
203
self.kotak_horizontal_3 = gtk.HBox(spacing = 10)
204
self.kotak_horizontal_3.pack_start(self.tabel_kalkulator)
206
self.kotak_vertikal.pack_start(self.kotak_horizontal_1)
207
self.kotak_vertikal.pack_start(self.kotak_horizontal_2)
208
self.kotak_vertikal.pack_start(self.kotak_horizontal_3)
210
self.jendela.add(self.kotak_vertikal)
213
self.keluar.connect("activate", gtk.main_quit)
214
self.keterangan.connect("activate", self.ihwal)
216
self.tombol_tutup.connect("clicked", self.panggilan_keluar)
217
self.jendela.connect("destroy", self.panggilan_keluar)
219
self.tombol_satu.connect("clicked", self.klik, "1")
220
self.tombol_dua.connect("clicked", self.klik, "2")
221
self.tombol_tiga.connect("clicked", self.klik, "3")
222
self.tombol_empat.connect("clicked", self.klik, "4")
223
self.tombol_lima.connect("clicked", self.klik, "5")
225
self.tombol_enam.connect("clicked", self.klik, "6")
226
self.tombol_tujuh.connect("clicked", self.klik, "7")
227
self.tombol_delapan.connect("clicked", self.klik, "8")
228
self.tombol_sembilan.connect("clicked", self.klik, "9")
229
self.tombol_nol.connect("clicked", self.klik, "0")
230
self.tombol_titik.connect("clicked", self.klik, ".")
232
self.tombol_kurung_tutup.connect("clicked", self.klik, ")")
233
self.tombol_kurung_buka.connect("clicked", self.klik, "(")
235
self.tombol_hapus.connect("clicked", self.klik, "CE")
236
self.tombol_sama_dengan.connect("clicked", self.klik, "=")
238
self.tombol_kali.connect("clicked", self.klik, "*")
239
self.tombol_bagi.connect("clicked", self.klik, "/")
240
self.tombol_tambah.connect("clicked", self.klik, "+")
241
self.tombol_kurang.connect("clicked", self.klik, "-")
243
self.tombol_sin.connect("clicked", self.klik, "sin(")
244
self.tombol_cos.connect("clicked", self.klik, "cos(")
245
self.tombol_tan.connect("clicked", self.klik, "tan(")
246
self.tombol_atan.connect("clicked", self.klik, "atan(")
248
self.tombol_tanh.connect("clicked", self.klik, "tanh(")
249
self.tombol_sqrt.connect("clicked", self.klik, "sqrt(")
250
self.tombol_asin.connect("clicked", self.klik, "asin(")
251
self.tombol_acos.connect("clicked", self.klik, "acos(")
253
self.tombol_degrees.connect("clicked", self.klik, "degrees(")
254
self.tombol_pi.connect("clicked", self.klik, "pi")
255
self.tombol_sinh.connect("clicked", self.klik, "sinh(")
256
self.tombol_cosh.connect("clicked", self.klik, "cosh(")
258
self.tombol_radians.connect("clicked", self.klik,"radians(")
259
self.tombol_e.connect("clicked", self.klik,"e")
260
self.tombol_log.connect("clicked", self.klik, "log(")
261
self.tombol_log10.connect("clicked", self.klik, "log10(")
263
def klik(self, a, b):
266
x = "self.x=" + self.masukan_data.get_text()
269
self.masukan_data.set_text("")
284
self.masukan_data.set_text(str(self.x))
288
self.x = self.masukan_data.get_text()
291
self.tentang = gtk.AboutDialog()
292
self.tentang.set_program_name("Kalkulator UVT")
293
self.tentang.set_version("0.1")
294
self.tentang.set_license(license)
295
self.tentang.set_copyright("(c) 2013 UVT")
296
self.tentang.set_authors(authors)
297
self.tentang.set_comments("Kalkulator Saintifik")
298
self.tentang.set_website("http://uvt.web.id")
299
self.tentang.set_logo(gtk.gdk.pixbuf_new_from_file("/usr/share/kalkuluvtsains/gambar/kalkulatorsains.png"))
301
self.tentang.destroy()
303
def panggilan_keluar(self, a):
306
if __name__ == "__main__":