forked from BukuInformatika/python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGUIProgramming.tex
More file actions
448 lines (426 loc) · 16.4 KB
/
Copy pathGUIProgramming.tex
File metadata and controls
448 lines (426 loc) · 16.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
Python menyediakan berbagai pilihan untuk mengembangkan antarmuka pengguna grafis (GUIs). Yang paling tercantum dibawah ini : \par
\noindent
\begin{itemize}
\item Tkinter \par
Antarmuka Python ke toolkit Tk GUI dikirimkan dengan Python. \par
\noindent
\item wxPython \par
antarmuka Python open-source untuk wxWindows \par
\noindent
\item Jpython \par
Port Python untuk java yang memberikan Python script akses tanpa batas ke perpustakaan kelas java pada mesin lokal \par
\vspace{12pt}
\noindent
\textbf{3.1 Tkinter Pemrograman} \par
Tkinter adalah perpustakaan GUI standar untuk Python. Python bila dikombinasikan dengan Tkinter menyediakan cara yang mudah dan cepat untuk membuat aplikasi GUI. Tkinter menyediakan antarmuka berorientasi ojek yang kuat untuk toolkit Tk GUI. \par
\noindent
\hspace*{0.5in} Membuat aplikasi GUI menggunakan Tkinter adalah tugas yang mudah. Yang diperlukan adalah melakukan langkah-langkah sebagai berikut : \par
\noindent
\item Mengimpor Tkinter modul \par
\noindent
\item Buat jendela utama aplikasi GUI \par
\noindent
\item Tambahkan satu atau lebih dari widget tersebut diatas ke aplikasi GUI \par
\noindent
\item Masukkan acara loop utama untuk mengambil tindakan terhadap setiap peristiwa dipicu oleh pengguna\end{itemize}
\par
\noindent
%%%%%%%%%%%% Start New Page here %%%%%%%%%%%%%%
\newpage
\vspace{12pt}
\vspace{12pt}
\noindent
Contoh : \par
\noindent
{\fontsize{10pt}{10pt}\selectfont $ \# $!/usr/bin/python} \par
\vspace{10pt}
\noindent
{\fontsize{10pt}{10pt}\selectfont import Tkinter} \par
\noindent
{\fontsize{10pt}{10pt}\selectfont top = Tkinter.Tk()} \par
\noindent
{\fontsize{10pt}{10pt}\selectfont $ \# $ Code to add widgets will go here...} \par
\noindent
{\fontsize{10pt}{10pt}\selectfont top.mainloop()} \par
\vspace{10pt}
\noindent
\textbf{3.2 Tkinter Widget} \par
\noindent
\hspace*{0.5in} Tkinter menyediakan berbagai kontrol seperti tombol, label dan kotak teks yang digunakan dalam aplikasi GUI. Kontrol ini biasanya disebut widget. \par
\noindent
\hspace*{0.5in} Saat ini ada 15 jenis widget di Tkinter. Menyajikan widget serta penjelasan singkat pada tabel berikut ini : \par
%%%%%%%%%%%% Table No:1 Here %%%%%%%%%%%%%%
\begin{table}[ht]
\caption{Ukuran}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lcc}
\hline
Operator& Penjelasan \cr
\hline
Button&SMenampilkan tombol dalam aplikasi&\cr
Canvas&Menggambar bentuk seperti garis, oval, poligon dan persegi panjang dalam aplikasi&\cr
Checkbutton&Menampilkan sejumlah pilihan sebagai kotak centang. Pengguna dapat memilih beberapa pilihan pada suatu waktu&\cr
Entry&Menampilka bidang garis teks tunggal untuk menerima nilai-nilai dari pengguna\cr
Frame&Wadah untuk mengatur widget lainnya&\cr
Label &Memberikan keterangan garis single untuk widget lainnya. Hal ini berisi gambar&\cr
Listbox &Menyediakan daftar pilihan kepada pengguna&\cr
Menubutton&Menampilkan menu dalam aplikasi&\cr
Menu&Memberikan berbagai perintah untuk pengguna. Perintah-perintah ini terkandung di dalam MenuButton&\cr
Message&Menampilkan bidang teks multiline untuk menerima nilai-nilai dari pengguna&\cr
RadioButton&Menampilkan sejumah pilihan sebagai tombol radio. Pengguna dapat memilih hanya satu pilihan pada suatu waktu&\cr
Scale&Menyediakan widget slide&\cr
Scrollbar &Menambah kemampuan bergulir ke berbagai widget seperti kotak daftar&\cr
Text&Menampilka teks dalam beberapa garis&\cr
Toplevel&Menyediakan wajah jendela terpisah&\cr
PanedWindow&Wadah yang mengandung sejumlah panel disusun horizontal atau vertikal&\cr
LabelFrame&Wadah widget sederhana. Bertindak sebagai spacer atau wajah untuk layout jendela kompleks&\cr
TkMessageBox&Menampilkan kotak pesan dalam aplikasi&\cr
Spinbox &Memilih sejumlah tetap nilai-nilai&\cr
\hline
\end{tabular*}
\begin{tablenotes}
\end{tablenotes}
\end{table}
%%%%%%%%%%%% Table No:1 Ends Here %%%%%%%%%%%%%%
\vspace{12pt}
\noindent
\hspace*{0.5in} Beberapa atribut umu sebagai ukuran, warna dan font ditentukan. Berikut adalah beberapa atriut standarm : \par
\noindent
\begin{enumerate}
\item Ukuran \par
\noindent
\end{enumerate}
Berbagai panjang, lebar, dan dimensi lain dari widget digambarkan dalam banyak unit yang berbeda seperti : \par
\noindent
\begin{itemize}
\item Jika menetapkan dimensi ke integer diasumsikan dalam piksel \par
\noindent
\item Menentukan unit dengan menentukan dimensi untuk string yang berisi sejumlah diikuti oleh :\end{itemize}
\par
%%%%%%%%%%%% Table No:2 Here %%%%%%%%%%%%%%
\begin{table}[ht]
\caption{Ukuran}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lcc}
\hline
Karakter& Penjelasan \cr
\hline
c&Sentimeter&\cr
i&Inci&\cr
m&Milimeter&\cr
p&Poin printer\cr
\hline
\end{tabular*}
\begin{tablenotes}
\end{tablenotes}
\end{table}
%%%%%%%%%%%% Table No:2 Ends Here %%%%%%%%%%%%%%
\hspace*{0.5in} \vspace{12pt}
\hspace*{0.5in} Tkinter mengungkapkan panjang sebagai integer jumlah piksel. Berikut ini adalah daftar pilihan panjang umum: \par
\noindent
\begin{itemize}
\item borderwidth \par
Lebar batas yang memberikan tampilan tiga dimensi untuk widget \par
\noindent
\item highlightthickness \par
Lebar puncak persegi panjang ketika widget memiliki fokus \par
\noindent
\item padX padY \par
Ruang tambahan widget dari manajer tata letak luar minimum widget perlu menampilkan isinya di x dan y arah \par
\noindent
\item selectborderwidth \par
Lebar perbatasan tiga dimensi disekitar dipilih item widget \par
\noindent
\item wraplength \par
Panjang garis maksimum untuk widget yang melakukan kata membungkus \par
\noindent
\item height \par
Tinggi diinginkan widget \par
\noindent
\item underline \par
Indeks karakter untuk menggarisawahi dalam teks widget \par
\noindent
\item width \par
\noindent
\item Lebar diinginkan widget\end{itemize}
\par
\noindent
Warna \par
\noindent
Tkinter memiliki warna dengan string. Ada dua cara umum untuk menentukan warna di Tkiter, yaitu : \par
\noindent
\begin{itemize}
\item Menggunakan string menentukan proporsi merah, hijau dan biru didigit heksadesimal. Misalnya $ " $ $ \# $ffff $ " $ putih, $ " $ $ \# $000000 $ " $ hitam dan $ " $ $ \# $000fff000 $ " $ hijau. \par
\noindent
\item Menggunakan lokal standar nama warna . warna-warna $ " $white $ " $, $ " $black $ " $, $ " $green $ " $ dan $ " $magenta $ " $ akan selalu tersedia.\end{itemize}
\par
\vspace{12pt}
Pilihan warna umum : \par
\noindent
\begin{itemize}
\item activebackground \par
Warna latar berlakang untuk widget ketika widget aktif \par
\noindent
\item activeforeground \par
Warna depan untuk widget ketika widget aktif \par
\noindent
\item background \par
Merepresentasikan sebagai \textit{bg} \par
\noindent
\item disableforeground \par
Warna depan untuk widget ketika widget dinonaktifkan \par
\noindent
\item foreground \par
Merepresentasikan fg \par
\noindent
\item highlightbackground \par
Warna latar belakang dari daerah puncak ketika widget memiliki fokus \par
\noindent
\item hightlightcolor \par
Warna depan dari wilayah puncak ketika widget memiliki fokus \par
\noindent
\item selectbackground \par
Warna latar belakang untuk item yang dipilih dari widget \par
\noindent
\item selectforeground \par
Warna depan untuk item yang dipilih dari widget \par
\noindent
\item Font \par
\noindent
Sebagai tupel yang elemen pertama adalah keluarga font diikuti dengan string yang berisi satu atau lebih gaya pengubah tebal,miring, garis bawah dan overstrike. \par
\noindent
Contoh : \par
\noindent
\item ( $ " $Helvetica $ " $, $ " $16 $ " $-point Helvetica biasa \par
\noindent
\item ( $ " $Times $ " $, $ " $24 $ " $, $ " $beranimiring $ " $) untuk 24-point kali miring tebal\end{itemize}
\par
\vspace{12pt}
Dapat membuat $ " $font object $ " $ dengan mengimpor modul tkFont dan menggunakan kelas konstruktor font nya : \par
Import tkFont \par
Font = tkFont.Font (option, ....) \par
\vspace{12pt}
Berikut adalah daftar pilihan : \par
\noindent
\begin{itemize}
\item Family \par
Font nama keluarga sebagai string \par
\noindent
\item Size \par
Font tinggi sebagai integer dalam poin \par
\noindent
\item Weight \par
Bold untuk teal, normal untuk berat badan secara teratur \par
\noindent
\item Slant \par
Italic untuk miring, roman untuk unstlanted \par
\noindent
\item Underline \par
1 untuk teks yang digarisbawahi, 0 untuk normal \par
\noindent
\item Overstrike \par
1 untuk teks telak, 0 untuk normal \par
Jika berjalan di bawah X window system, dapat menggunakan salah satu nama font X. Sebagai contoh, font bernama $ " $-*lucidatypewriter-medium-r-*-*-*-140-*-*-* $ " $ adalah favorit fixed-width font penulis untuk digunakan pada layar. \par
\noindent
\item Jangkar \par
\noindent
Jangkar digunakan untuk mendefinisikan mana teks diposisikan relatif terhadap titik acuan. Berikut adalah daftar kemungkinan konstanta yang dapat digunakan : \par
\noindent
\item NW \par
\noindent
\item N \par
\noindent
\item NE \par
\noindent
\item W \par
\noindent
\item TENGAH \par
\noindent
\item E \par
\noindent
\item SW \par
\noindent
\item S \par
\noindent
\item SE\end{itemize}
\par
\vspace{12pt}
Jika menggunakan tengah sebagai jangkar tek, tek akan ditengahkan horizontal dan vertikal disekitar titik referensi. \par
Jangkar NW akan posisi teks sehingga titik referensi bertepatan dengan laut sudut kotak berisi teks \par
Jangakr W akan pusat teks secara vertikal disekitar titik referensi dengan tepi kiri kotak teks yang melewati titik itu dan sebagainya. \par
Jika membuat widget kecil didalam bingkai besar dan menggunakan jangkar = SE pilihan, widget akan ditempatkan disudut kanan bawah gambar. Jika menggunakan anchor = N sebaliknya widget akan dipusatkan disepanjang tepi atas. \par
\noindent
Gaya relief \par
\noindent
Widget mengacu pada efek 3-D simulasi terbaru disekitar bagian luar widget. Berikut adalah daftar konstanta yang mungkin dapat digunakan untuk atribut: \par
\noindent
\begin{itemize}
\item Datar \par
\noindent
\item Dibesarkan \par
\noindent
\item Cekung \par
\noindent
\item Alur \par
\noindent
\item Punggung bukit\end{itemize}
\par
\vspace{12pt}
Contoh : \par
{\fontsize{10pt}{10pt}\selectfont From Tkinter import *} \par
{\fontsize{10pt}{10pt}\selectfont Import Tkinter} \par
\vspace{10pt}
{\fontsize{10pt}{10pt}\selectfont top = Tkinter.Tk()} \par
{\fontsize{10pt}{10pt}\selectfont B1 = Tkinter.Button(top, text= $ " $FLAT $ " $, relief=FLAT)} \par
{\fontsize{10pt}{10pt}\selectfont B2 = Tkinter.Button(top, text= $ " $RAISED $ " $, relief=RAISED)} \par
{\fontsize{10pt}{10pt}\selectfont B3 =Tkinter.Button(top, text= $ " $SUNKEN $ " $, relief=SUNKEN)} \par
{\fontsize{10pt}{10pt}\selectfont B4=Tkinter.Button(top, text= $ " $GROOVE $ " $, relief=GROOVE)} \par
{\fontsize{10pt}{10pt}\selectfont B5=Tkinter.Button(top, text= $ " $RIDGE $ " $, relief=RIDGE)} \par
\vspace{10pt}
{\fontsize{10pt}{10pt}\selectfont B1.pack()} \par
{\fontsize{10pt}{10pt}\selectfont B2.pack()} \par
{\fontsize{10pt}{10pt}\selectfont B3.pack()} \par
{\fontsize{10pt}{10pt}\selectfont B4.pack()} \par
{\fontsize{10pt}{10pt}\selectfont B5.pack()} \par
{\fontsize{10pt}{10pt}\selectfont top.mainloop()} \par
\noindent
Britmaps \par
\noindent
Ada beberapa jenis bitmap yang tersedia, diantaranya: \par
\noindent
\begin{itemize}
\item Kesalahan \par
\noindent
\item Gray75 \par
\noindent
\item Gray50 \par
\noindent
\item Gray12 \par
\noindent
\item Jam Pasir \par
\noindent
\item Info \par
\noindent
\item Questhead \par
\noindent
\item Perantanyaan \par
\noindent
\item Peringatan\end{itemize}
\par
\vspace{12pt}
Contoh: \par
{\fontsize{10pt}{10pt}\selectfont From Tkinter import *} \par
{\fontsize{10pt}{10pt}\selectfont Import Tkinter} \par
\vspace{10pt}
{\fontsize{10pt}{10pt}\selectfont Top = Tkinter.Tk()} \par
\vspace{10pt}
{\fontsize{10pt}{10pt}\selectfont B1 = Tkinter.Button(top, text = $ " $error $ " $, relief=RAISED, $ \setminus $ bitmap= $ " $error $ " $)} \par
{\fontsize{10pt}{10pt}\selectfont B2 = Tkinter.Button(top, text = $ " $hourglass $ " $, relief=RAISED, $ \setminus $ bitmap= $ " $hourglass $ " $)} \par
{\fontsize{10pt}{10pt}\selectfont B3 = Tkinter.Button(top, text = $ " $info $ " $, relief=RAISED, $ \setminus $ bitmap= $ " $info $ " $)} \par
{\fontsize{10pt}{10pt}\selectfont B4 = Tkinter.Button(top, text = $ " $question $ " $, relief=RAISED, $ \setminus $ bitmap= $ " $question $ " $)} \par
{\fontsize{10pt}{10pt}\selectfont B5 = Tkinter.Button(top, text = $ " $warning $ " $, relief=RAISED, $ \setminus $ bitmap= $ " $warning $ " $)} \par
\vspace{10pt}
{\fontsize{10pt}{10pt}\selectfont B1.pack()} \par
{\fontsize{10pt}{10pt}\selectfont B2.pack()} \par
{\fontsize{10pt}{10pt}\selectfont B3.pack()} \par
{\fontsize{10pt}{10pt}\selectfont B4.pack()} \par
{\fontsize{10pt}{10pt}\selectfont B5.pack()} \par
{\fontsize{10pt}{10pt}\selectfont top.mainloop()} \par
\noindent
Kursor \par
\noindent
Berikut daftar menarik : \par
\noindent
\begin{itemize}
\item Panah \par
\noindent
\item Lingkaran \par
\noindent
\item Jam \par
\noindent
\item Menyebrang \par
\noindent
\item Dotbox \par
\noindent
\item Bertukar \par
\noindent
\item Fluer \par
\noindent
\item Jantung \par
\noindent
\item Manusia \par
\noindent
\item Tikus \par
\noindent
\item Bajak laut \par
\noindent
\item Tamah \par
\noindent
\item Antar jemput \par
\noindent
\item Perekat \par
\noindent
\item Laba-laba \par
\noindent
\item Kaleng semprot \par
\noindent
\item Bintang \par
\noindent
\item Target \par
\noindent
\item Tcross \par
\noindent
\item Melakukan perjalanan \par
\noindent
\item Menonton\end{itemize}
\par
\vspace{12pt}
Contoh : \par
{\fontsize{10pt}{10pt}\selectfont From Tkinter import *} \par
{\fontsize{10pt}{10pt}\selectfont Import Tkinter} \par
\vspace{10pt}
{\fontsize{10pt}{10pt}\selectfont Top = Tkinter.Tk()} \par
\vspace{10pt}
{\fontsize{10pt}{10pt}\selectfont B1 = Tkinter.Button(top, text = $ " $circle $ " $, relief=RAISED, $ \setminus $ bitmap= $ " $circle $ " $)} \par
{\fontsize{10pt}{10pt}\selectfont B2 = Tkinter.Button(top, text = $ " $plus $ " $, relief=RAISED, $ \setminus $ bitmap= $ " $plus $ " $)} \par
\vspace{10pt}
{\fontsize{10pt}{10pt}\selectfont B1.pack()} \par
{\fontsize{10pt}{10pt}\selectfont B2.pack()} \par
{\fontsize{10pt}{10pt}\selectfont top.mainloop()} \par
\vspace{10pt}
\noindent
\textbf{3.3 Manajemen Geometri} \par
\noindent
\hspace*{0.5in} Semua widget tkinter memiliki akses ke metode manajemen geometri tertentu, yang memiliki tujuan menggorganisir widget diseluruh wilayah widget induk. Tkinter mengekspos kelas manager geometri berikut : \par
\noindent
\begin{itemize}
\item Metode the \textit{pack()} \par
\noindent
Manajer geometri ini mengatur widget diblok sebelum menempatkan mereka di widget induk \par
\noindent
\item Metode the \textit{grid()} \par
\noindent
Manajer geometri ini mengatur widget dalam struktur tabel seperti di widget induk \par
\noindent
\item Metode~the \textit{place()}\end{itemize}
\par
\noindent
Manajer geometri ini mengatur widget dengan menempatkan dalam posisi tertentu dalam widget induk \par
\vspace{12pt}
\noindent
\textbf{3.4 Manfaat Tkinter} \par
Tkinter sangat sederhana. Erikut manfaat Tkinter dibandingkan GUI toolkit : \par
\noindent
\begin{itemize}
\item Tkinter mudah diakses oleh siapa saja. (Accessibilty)\vspace{\baselineskip}
Tkinter merupakan toolkit yang ringan dan satu-satunya solusi GUI yang paling sederhana untuk Python sampai saat ini. Cukup menuliskan beberapa baris kode Python untuk membuat aplikasi GUI sederhana dengan Tkinter. Untuk menambahkan komponen baru pada Tkinter, dapat membuatnya dalam kode Python atau menambahkan paket ekstensi seperti Pmw, Tix, atau ttk. \par
\noindent
\item Tkinter mudah digunakan di semua platform (Portability)\vspace{\baselineskip}
Sebuah program Python yang dibangun menggunakan Tkinter dapat berjalan dengan baik di semua platform sistem operasi seperti Microsoft Windows, Linux, dan Macintosh. Dan dari segi tampilan window, akan terlihat sama dengan standar platform yang digunakan. \par
\noindent
\item Tkinter selalu tersedia di Python (Availability)\vspace{\baselineskip}
Tkinter merupakan modul standar pada pustaka Python. Sebagian besar paket instalasi Python sudah langsung berisi Tkinter. Khusus untuk beberapa distro Linux, perlu menambahkan paket Tkinter secara terpisah. Pada Windows, bisa langsung menggunakan Tkinter sesaat setelah menginstal paket instalasi Python. \par
\noindent
\item Dokumentasi Tkinter sangat LUAR BIASA (Documentation)\vspace{\baselineskip}
Python (plus Tkinter) ini bersifat open-source, maka banyak sekali komunitas-komunitas yng membahas Python dan Tkinter dan bisa belajar dan bertanya langsung dengan para ahli.\end{itemize}
\par
\vspace{12pt}
\vspace{12pt}