Panduan Pemrograman GUI Python Tkinter
Panduan Pemrograman GUI Python Tkinter
PEMROGRAMAN PYTHON
Course Code: CS721PE
C. RAJEEV
Asisten Profesor
CSE
MRECW.
UNIT-4
UNIT - IV
Pemrograman GUI: Pengenalan, Tkinter dan Pemrograman Python
Tur Singkat GUI Lainnya, Modul Terkait dan GUI Lainnya.
Aplikasi GUI seperti Pengedit Teks digunakan untuk membuat, membaca, memperbarui, dan menghapus berbagai jenis
berkas.
Aplikasi GUI seperti Sudoku, Catur, dan Solitaire adalah permainan yang bisa Anda mainkan.
Aplikasi GUI seperti Google Chrome, Firefox, dan Microsoft Edge digunakan untuk menjelajah melalui
internet
Perpustakaan Python Untuk Membuat Antarmuka Pengguna Grafis:
Python menyediakan beberapa opsi/perpustakaan yang berbeda untuk menulis program berbasis GUI.
paket Antarmuka Pengguna) Ini adalah toolkit yang paling umum digunakan untuk Pemrograman GUI di
Python.
2. JPython: Ini adalah platform Python untuk Java yang menyediakan skrip Python secara mulus.
3. wxPython: Ini adalah toolkit GUI sumber terbuka, lintas platform yang ditulis dalam C++. Ini adalah salah satu dari
Ada banyak antarmuka lain (Kivy, Python QT) yang tersedia untuk GUI. Di antara semua
ini, Tkinter lebih disukai oleh banyak pelajar dan pengembang hanya karena betapa sederhana
dan betapa mudahnya.
Apa itu Tcl, Tk, dan Tkinter?
Tkinter adalah pustaka GUI default Python. Ini berdasarkan toolkit Tk, yang pada awalnya
Karena popularitas Tk, ia telah dipindahkan ke berbagai bahasa pemrograman skrip lainnya,
termasuk Perl(Perl/Tk), Ruby(Ruby/Tk), dan Python(Tkinter).
tkinter adalah modul Python bawaan yang digunakan untuk membuat aplikasi GUI sederhana. Itu adalah yang paling
Anda tidak perlu khawatir tentang pemasangan modul Tkinter karena sudah termasuk
denganPythondefault.
>>>import Tkinter-------------python 2.x
>>>import tkinter-------------python 3.x
Jika interpreter Python Anda tidak disusun dengan Tkinter diaktifkan, impor modul akan gagal:
>>>import Tkinter
dikonfigurasi untuk Tk
ImportError: Tidak ada modul bernama _tkinter
Tkinter dan Pemrograman Python
Membuat aplikasi GUI menggunakan Tkinter adalah tugas yang mudah. Semua yang perlu Anda lakukan adalah melakukan
langkah-langkah berikut −
1. mengimpor tkinter
Ini sama seperti mengimpor modul lain dalam kode python. Perhatikan bahwa nama dari
modul di Python 2.x adalah 'Tkinter' dan di Python 3.x adalah 'tkinter'.
impor tkinter
2. Buat jendela utama aplikasi GUI.
Kami sedang melakukan operasi dan menampilkan visual serta segala sesuatunya pada dasarnya.
Sebuah event loop pada dasarnya memberitahu kode untuk terus menampilkan jendela sampai kita
tutup secara manual. Itu berjalan dalam loop tak terbatas di belakang.
Untuk membuat jendela sederhana dengan teks Hello World!.
impor tkinter
jendela = [Link]()
[Link]("GUI") untuk mengganti judul jendela
pack digunakan untuk menampilkan objek di jendela
label = [Link](window, text = "Hello World!").pack()
[Link]()
Langkah-langkah:-
1. impor modul tkinter.
2. Inisialisasi manajer jendela dengan metode [Link]() dan tetapkan ke
variablewindow. Metode ini membuat jendela kosong dengan tutup, maksimalkan dan
kurangi tombol.
Tk(screenName=None, baseName=None, className='Tk', useTk=1)
Untuk membuat jendela utama, tkinter menawarkan metode, untuk mengubah nama jendela,
you can change theclassNameto the desired one.
Kode dasar yang digunakan untuk membuat jendela utama aplikasi adalah-
window = [Link]()
3.(opsional) Ganti judul jendela sesuai keinginan Anda dengan
[Link](judul_jendela).
4. Label digunakan untuk menyisipkan beberapa objek ke dalam jendela. Di sini, kami menambahkan Label dengan
beberapa teks.
atribut pack() dari widget digunakan untuk menampilkan widget dalam ukuran yang dibutuhkannya.
5. Akhirnya, metode themainloop() untuk menampilkan jendela sampai Anda menutupnya secara manual.
Widget Tk:
Widgetsare something like elements in [Link] will find different types ofwidgetsto
berbagai jenis elemen dalam Tkinter.
1. Button :
Ini digunakan untuk menambahkan tombol dalam aplikasi Python.
Opsi-opsi ini dapat digunakan sebagai pasangan kunci-nilai yang dipisahkan oleh koma.
Anda dapat menempatkan grafik, teks, widget, atau bingkai pada Kanvas.
Syntax;
w = Canvas ( master, opsi=nilai, ... )
master− Ini mewakili jendela induk.
opsi− Berikut adalah daftar opsi yang paling umum digunakan untuk widget ini.
Opsi-opsi ini dapat digunakan sebagai pasangan kunci-nilai yang dipisahkan dengan koma.
impor tkinter
top = [Link]()
[Link]()
[Link]()
3. Widget skala:
Widget skala digunakan untuk mengimplementasikan slider grafis ke aplikasi python sehingga
pengguna dapat menggeser melalui rentang nilai yang ditampilkan pada slider dan memilih salah satu di antaranya
mereka.
Kita dapat mengendalikan nilai minimum dan maksimum serta resolusi skala.
Sintaksis
w = Skala(top, opsi)
Daftar kemungkinan opsi diberikan di bawah ini:
from_: Ini digunakan untuk merepresentasikan salah satu ujung dari rentang widget.
ke: Ini mewakili nilai afloat atau integer yang menentukan ujung lainnya dari
rentang yang diwakili oleh skala.
orientasi Ini dapat diatur ke horizontal atau vertikal tergantung pada jenis skala.
bd: Ukuran batas dari widget. Nilainya default adalah 2 piksel.
bg: Warna latar belakang widget.
font: Jenis font dari teks widget.
fg: Warna latar depan teks
Contoh:
dari tkinter impor *
master = Tk()
w = Skala(master, dari_=0, ke=100)
[Link]()
w = Skala(master, dari_=0, ke=200, orient=HORIZONTAL)
[Link]()
perulanganutama()
4. Label:
Label digunakan untuk menentukan kotak kontainer di mana kita dapat menempatkan teks atau gambar.
widget digunakan untuk memberikan pesan kepada pengguna tentang widget lain yang digunakan dalam python
aplikasi.
Ada berbagai opsi yang dapat ditentukan untuk mengonfigurasi teks atau bagian dari
teks yang ditampilkan di Label.
Sintaksis:
w =Label (master, opsi)
• master adalah parameter yang digunakan untuk merepresentasikan jendela induk.
relief
Menentukan penampilan dari sebuah
theTextwidget.
If you want to displayone or more lines of textthat cannot be modified by the user,
maka Anda harus menggunakan widgetLabel.
Widget Entri
dari tkinter impor *
top = Tk()
L1 = Label(top, text="Nama Pengguna")
[Link]( sebelah = KIRI)
E1 =Entry(atas, bd =5)
[Link](side=KANAN)
[Link]()
7. Bingkai:
Ini digunakan untuk mengatur kumpulan widget. Ini bertindak seperti wadah.
yang dapat digunakan untuk menampung widget lainnya. Area persegi panjang
8. Kotak daftar:
9. Menu:
Tujuan dari widget ini adalah untuk memungkinkan kami membuat segala jenis menu
[Link](6, "Ruby")
[Link]()
[Link]()
Menu
dari tkinter import *
impor kotak pesan
impor tkinter
top = Tk()
mb=Menubuton( top, text="File", relief=RAISED )
[Link]()
[Link] = Menu( mb, tearoff = 0 )
mb["menu"] = [Link]
Var1 = IntVar()
Var2 = IntVar()
[Link].add_checkbuton( label="Baru", variable=Var1 )
[Link].add_checkbuton ( label="buka", variable=Var2 )
[Link].add_checkbuton ( label="Simpan", variable=Var2 )
[Link].add_checkbuton ( label="Save as", variable=Var2 )
[Link].add_checkbuton ( label="Tutup", variable=Var2 )
[Link].add_checkbuton ( label="Keluar", variable=Var2 )
[Link]()
[Link]()
10. Tombol Menu
Ini dapat didefinisikan sebagai menu tarik-turun yang ditampilkan kepada pengguna.
sepanjang waktu. Ini digunakan untuk memberikan pengguna pilihan untuk memilih
Ini menyediakan sejumlah fungsi yang bisa Anda gunakan untuk menampilkan
root = Tk()
var = StringVar()
[Link]()
[Link]()
Widget kotak pesan
dari tkinter import *
dari tkinter import messagebox
top = Tk()
[Link]("100x100")
def helloCallBack():
msg = [Link]( “Say Hello", "Hello World")
B = Tombol(atas, teks = "Katakan Halo", perintah = helloCallBack)
[Link](x = 100,y = 100)
[Link]()
13. Tombol radio:
Set of buttons of whichonly one can be "pressed" (similar to
input radio HTML
14. Scrollbar:
Widget scrollbar digunakan untuk menggulung konten ke bawah
widget lain seperti listbox, teks, dan kanvas. Namun, kami
juga dapat membuat bilah gulir horizontal untuk widget Entry.
[Link]
Ini digunakan untuk menampilkan data teks di aplikasi Python.
Namun, Tkinter menyediakan kita widget Entry yang digunakan
untuk menerapkan kotak teks satu baris.
Widget Teks digunakan untuk menampilkan beberapa baris
defsel():
selection = "You selected the option " + str([Link]())
[Link](teks = pilihan)
root = Tk()
var = IntVar()
R1 = Radiobutton(root, text="C", variable=var, value=1,
command=sel)
[Link]( jangkar = W )
label = Label(root)
[Link]()
[Link]()
Ex: scroll bar:
root = Tk()
scrollbar = Scrollbar(root)
mainloop()
Contoh: teks
[Link]()
text.tag_add("di sini", "1.0", "1.4")
text.tag_add("start", "1.8", "1.13")
text.tag_config("disini", latar_belakang="kuning", depan="biru")
text.tag_config("start", background="hitam", foreground="hijau")
[Link]()
17. spinbox:
Widget Spinbox adalah varian dari widget Entry Tkinter standar, yang dapat digunakan untuk
digunakan untuk memilih dari sejumlah nilai tetap.
Contoh:
dari tkinter import *
master = Tk()
w =Spinbox(master, dari_=0, ke=10)
[Link]()
mainloop()
Tour Singkat Antarmuka Pengguna Lain
empat dari toolkit yang lebih populer dan tersedia di luar sana:
1. Tix (Tk Interface eXtensions)
2. Pmw (Ekstensi Tkinter Python MegaWidgets)
3. wxPython (ikatan Python ke wxWidgets) dan
4. PyGTK (Ikatan Python untuk GTK+).
Pmwis hanyalah ekstensi untuk Tkinter, ini yang paling mudah untuk diinstal (cukup ekstrak ke dalam
wxPython dan PyGTK melibatkan pengunduhan lebih dari satu file dan pembangunan.
widget
Tix juga menyertakan banyak widget lainnya yang umumnya berguna dalam berbagai macam
applications:NoteBook, FileEntry, PanedWindow, etc.
Widget TheHList dapat digunakan untuk menampilkan data apa pun yang memiliki struktur hierarkis.
Ini adalah alat untuk membangun widget komposit tingkat tinggi di Python menggunakan
paket tkinter.
Ini terdiri dari serangkaian kelas dasar dan perpustakaan megawidget yang fleksibel dan dapat diperluas
Megawidget ini mencakup buku catatan, kotak dropdown, widget pilihan, widget terpisah,
widget yang digulir, jendela dialog, dll.
3. wxPython (ikatan Python ke wxWidgets):
Ini memungkinkan pemrogram Python untuk membuat program dengan fungsionalitas yang kuat dan tinggi.
wxPython adalah perangkat lunak sumber terbuka, yang berarti bahwa ia gratis untuk digunakan oleh siapa saja dan sumbernya
kode tersedia untuk siapa saja untuk dilihat dan dimodifikasi. Dan siapa saja dapat memberikan perbaikan atau
wxPython is a cross-platformtoolkit. This means that the same program will run on
berbagai platform tanpa modifikasi.
Platform yang Didukung saat Ini adalah Microsoft Windows, Mac OS X, dan macOS,
Sistem Linux atau sistem mirip unix lainnya dengan pustaka GTK2 atau GTK3.
Dalam banyak kasus, widget asli digunakan di setiap platform untuk menyediakan 100% asli.
tampilan dan nuansa untuk aplikasi.
4. PyGTK (Pita Python untuk GTK+):
GTK adalah toolkit antarmuka pengguna sumber terbuka lintas platform dan pengembangan
kerangka kerja.
Ini adalah kerangka kerja populer yang digunakan untuk Linux karena mereka bersumber terbuka dan memberikan
PyGTK adalah sekumpulan pembungkus Python untuk pustaka antarmuka pengguna grafis GTK+.
GTK adalah hanya toolkit widget untuk aplikasi GNOME (koleksi sekitar 30
aplikasi), LXDE (lingkungan desktop gratis dengan sumber daya yang relatif rendah
persyaratan) dan Xfce (lingkungan desktop gratis dan sumber terbuka untuk Linux dan BSD
sistem operasi.) Lingkungan Desktop.
Modul Terkait dan GUI Lainnya
Ada sistem pengembangan GUI lain yang dapat digunakan dengan Python.
Pemrograman Web:
Pendahuluan:
1. Menjelajah Web: Komputasi Klien/Server (Lagi?!?):
Browsing web termasuk dalam arsitektur client/server yang sama yang telah kita lihat.
berulang kali.
Kali ini, Webclient adalah browser, aplikasi yang memungkinkan pengguna untuk mencari dokumen di
theWorld WideWeb.
Di sisi lain ada Webserver, proses yang berjalan di host penyedia informasi
komputer. Server-server ini menunggu klien dan permintaan dokumen mereka, memprosesnya, dan
Kembalikan data yang diminta.
One important reason to do this is that abrowser provides only limited capacity, i.e., it
digunakan terutama untuk melihat dan berinteraksi dengan situs web.
di sisi lain, program klien, memiliki kemampuan untuk melakukan lebih banyak, tidak hanya
unduh data, tetapi juga dapat menyimpannya, memanipulasinya, atau mungkin bahkan mentransmisikannya ke
Aplikasi yang menggunakan modul urllib untuk mengunduh atau mengakses informasi di Web
[menggunakan baik [Link]() atau [Link]()] dapat dianggap sebagai klien Web yang sederhana.
Yang perlu Anda lakukan adalah memberikan alamat Web yang valid.
Lokator Sumber Uniform:
Penjelajahan Web sederhana melibatkan penggunaan alamat Web yang disebut URL (Uniform Resource Locator)
Pengidentifikasi). Alamat semacam itu digunakan untuk menemukan dokumen di Web atau untuk memanggil CGI
URL adalah bagian dari sekumpulan pengenal yang lebih besar yang dikenal sebagai URI (Uniform Resource Identifier)
Identifikasi).
URL hanyalah URI yang menggunakan protokol atau skema yang ada (yaitu, http, ftp, dll.) sebagai
sebagian dari alamatnya.
Seperti alamat jalan, alamat web memiliki beberapa struktur. Alamat jalan di Amerika
biasanya berbentuk "nomor penunjukan jalan," yaitu, 123 Jalan Utama. Ini berbeda dari
negara lain, yang memiliki aturan mereka sendiri.
Sebuah URL menggunakan format:
prot_sch://net_loc/path;params?query#frag
Sekali lagi, net_loc dapat dipecah menjadi beberapa komponen lainnya, beberapa diperlukan, yang lainnya
opsional. String net_loc terlihat seperti ini:
pengguna:kataSandi@host:port
Di antara yang empat, nama host adalah yang paling penting untuk menjalankan server web.
Nomor port diperlukan hanya jika server Web berjalan pada nomor port yang berbeda
dari default.
Nama pengguna dan kata sandi hanya digunakan saat melakukan koneksi FTP.
Untuk menangani URL dengan fungsi dan kemampuan yang sama sekali berbeda. Python menyediakan dua
modul yang berbeda. Salah satunya adalah urlparse, dan yang lainnya adalah urllib.
Modul urlparse:
Modul urlparse menyediakan fungsionalitas dasar untuk memanipulasi string URL.
Fungsi-fungsi ini termasuk-
1. urlparse(),
2. urlunparse(), dan
3. urljoin()
[Link]():
urlparse() memecah string URL menjadi beberapa komponen utama (prot_sch,
net_loc, path, params, query, frag).
Ini memiliki sintaksis berikut:
urlparse(urlstr, defProtSch=None, allowFrag=None)
urlparse() menganalisis urlstr menjadi tuple a6 (prot_sch, net_loc, path, params, query,
frag)
defProtSchindicates sebuah protokol jaringan default atau skema unduhan jika tidak ada yang tersedia
diberikan [Link].
[Link] adalah sebuah flag yang menandakan apakah bagian fragmen dari sebuah URL diizinkan atau tidak.
Berikut adalah apa yang dihasilkan urlparse() ketika diberikan sebuah URL:
>>> [Link]('[Link]
path, params, query, frag) urltup, yang bisa menjadi output dari urlparse(), menjadi satu
String URL dan mengembalikannya.
Sintaksis:
urlunparse(urlparse(urlstr))
Contoh:
Urlunparse(urlparse('[Link]
Output:
[Link]
Dalam kasus ini, parameter, kueri, dan fragmen semuanya tidak ada dalam URL asli.
URL yang baru tidak terlihat sama seperti yang asli, tetapi setara menurut
standar.
iii) [Link]():
Fungsi urljoin() berguna dalam kasus di mana banyak URL terkait diperlukan,
misalnya, URL untuk serangkaian halaman yang akan dihasilkan untuk sebuah situs web.
urljoin() mengambil baseurl dan menggabungkan jalur dasarnya (net_loc ditambah jalur penuh hingga, tetapi tidak
Sebagai contoh:
>>> [Link]('[Link] \
... 'current/lib/[Link]')
[Link]
Modul urllib:
urllib adalah modul Python yang dapat digunakan untuk membuka URL (Uniform Resource Locators).
mendefinisikan fungsi dan kelas untuk membantu dalam tindakan URL.
Urllib adalah paket yang mengumpulkan beberapa modul untuk bekerja dengan URL, seperti:
[Link] untuk membuka dan membaca.
[Link] untuk parsing URL
[Link] untuk pengecualian yang dihasilkan
[Link] untuk menguraikan berkas [Link]
Jika urllib tidak ada di lingkungan Anda, jalankan kode di bawah ini untuk menginstalnya.
pip install urllib
[Link]()
urlopen() membuka koneksi Web ke string URL yang diberikan dan mengembalikan objek mirip file.
sintaksis:
urlopen(urlstr,postQueryData=None)
urlopen() membuka URL yang ditunjuk oleh urlstr. Jika tidak ada protokol atau skema unduhan yang diberikan, atau
Untuk semua permintaan HTTP, jenis permintaan yang normal adalah "GET." Dalam kasus ini, string kueri
If the "POST" request method is desired, then the query string should be placed in the
postQueryData variable.
Permintaan GET dan POST adalah dua cara untuk "mengunggah" data ke server Web. Ketika sebuah
koneksi yang sukses dibuat, urlopen() mengembalikan objek mirip file seolah-olah tujuan adalah
sebuah file dibuka dalam mode baca.
misalnya, jika objek file kita adalah f, maka "pegangan" kita akan mendukung pembacaan yang diharapkan
Jika file sudah disalin dari Internet atau jika file adalah lokal, tidak ada yang berikutnya
pengunduhan akan terjadi.
ThedownloadStatusHook,if provided, is a function that is called after each block of data
telah diunduh dan disampaikan.
Ini dipanggil dengan tiga argumen berikut:
jumlah blok yang telah dibaca sejauh ini,
Sintaksis:
kutip(urldata, aman='/')
Karakter yang tidak pernah diubah termasuk koma, garis bawah, titik, dan tanda hubung.
dan alfanumerik. Semua yang lainnya tunduk pada konversi.
Secara khusus, karakter yang tidak diizinkan (?,!, spasi) diubah menjadi format heksadesimal
ekivalen ordinal yang diawali dengan tanda persen (%), yaitu, "%xx" di mana "xx" adalah
representasi heksadesimal dari nilai ASCII karakter.
Contoh:
>>> import urllib
>>> [Link]('Hello World@Python2')
Halo Dunia@Python2
Saat memanggil quote*(), string theurldata diubah menjadi string yang setara yang dapat
bagian dari string URL.
Perhatikan bahwa, fungsi quote() mempertimbangkan/charactersafeby secara default. Itu berarti, itu tidak
kode / karakter .
Fungsi quote() menerima parameter bernama safe yang nilai defaultnya adalah/
Jika Anda juga ingin mengkodekan /karakter, maka Anda dapat melakukannya dengan memberikan string kosong.
Ex:
>>> impor urllib
>>> [Link]('Hello World@Python2')
Halo Dunia di Python2
[Link]()
urlencode() mengambil kamus pasangan kunci-nilai dan mengkodekannya untuk dimasukkan sebagai
bagian dari kueri dalam string URL permintaan CGI.
Pasangan berada dalam format "kunci=nilai" dan dipisahkan oleh tanda ampersand (&).
Ex:
>>> aDict = { 'name': 'Georgina Garcia', 'hmdir': '~ggarcia' }
>>> [Link](aDict)
'name=Georgina+Garcia&hmdir=%7eggarcia'
Modul urllib2:
urllib2 adalah modul Python yang dapat digunakan untuk mengambil URL.
Modul urllib2 mendefinisikan fungsi dan kelas yang membantu dalam membuka URL
(kebanyakan HTTP) di dunia yang kompleks (autentikasi dasar dan digest, pengalihan,
kue dan lainnya
Perbedaan antara urllib dan urllib2
Meskipun kedua modul melakukan hal-hal terkait permintaan URL, mereka memiliki fungsionalitas yang berbeda.
urllib2 dapat menerima objek Permintaan untuk mengatur header untuk permintaan URL, urllib
yang mencakup:
● Mengindeks ke dalam mesin pencari besar seperti Google atau Yahoo!
CGI digunakan sebagai antarmuka antara server web dan yang terinstal tambahan.
aplikasi yang menghasilkan konten web dinamis. Aplikasi ini disebut skrip CGI
dan ditulis dalam berbagai skrip dan bahasa pemrograman seperti PHP, Perl, Python,
dll.
CGI memungkinkan program CGI memproses formulir HTML atau data lain yang berasal dari klien,
dan kemudian ini memungkinkan program CGI mengirimkan respons kembali ke klien
.
Tanggapan dapat berupa dokumen HTML, file GIF, klip video, atau data apa pun yang diminta klien.
peramban dapat melihat. Ini membuat halaman web Anda interaktif dengan pengguna.
Ketika seorang klien meminta dokumen dari server, server menemukan file tersebut dan mengirimkannya ke
klien.
Namun, jika seorang klien meminta program aCGI, server hanya bertindak sebagai perantara
antara klien dan program CGI.
apa yang terjadi ketika klien meminta proses CGI?
1. Klien mengirimkan permintaan ke server yang berjalan di mesin Anda. Permintaan tersebut mungkin
untuk sebuah dokumen, atau seperti isi dari sebuah formulir HTML.
Jika permintaan adalah untuk dokumen reguler (seperti dokumen HTML atau file .GIF), maka
server mengirimkan dokumen tersebut langsung kembali ke klien.
Jika permintaan adalah data yang dimaksudkan untuk aplikasi eksternal, maka server perlu menggunakan CGI
untuk menjalankan aplikasi tersebut.
Misalnya, permintaan klien mungkin adalah untuk mencari database. Aplikasi CGI
mengambil kriteria pencarian, mencari database, kemudian mengirimkan hasilnya kembali ke klien.
2. Ketika server menerima permintaan yang harus ditangani oleh aplikasi eksternal
(permintaan aCGI) bahwa server membuat salinan dirinya sendiri.
Proses kedua ini disebut proses CGI karena ini adalah proses di mana
Program CGI akan dijalankan.
Proses CGI memiliki semua jalur komunikasi yang sama dengan proses server
Satu-satunya tujuan proses CGI adalah untuk mengatur komunikasi antara
Program CGI dan server.
3. Program CGI merespons klien.
Ini memproses data, menghubungi layanan eksternal yang diperlukan, dan kemudian mengirimkan
Server kemudian mengambil respons program dan mengirimkannya kembali ke perangkat lunak klien.
ProgramAnda dapat mengeluarkan tipe data apa pun yang dibutuhkan, termasuk HTML, GIF, atau
JPEG
Aplikasi CGI:
Aplikasi CGI yang membuat HTML biasanya ditulis dalam salah satu dari banyak bahasa tingkat tinggi.
bahasa pemrograman tingkat tinggi yang memiliki kemampuan untuk menerima data pengguna, memprosesnya, dan
Ketika skrip aCGI dimulai, ia perlu mengambil data formulir yang diberikan pengguna, tetapi itu
harus memperoleh data ini dari klien Web, bukan pengguna di mesin server maupun
berkas disk.
Outputnya berbeda karena data apa pun yang dikirim ke keluaran standar akan dikirim kembali ke yang terhubung
Data yang dikirim kembali harus berupa sekumpulan header yang valid diikuti oleh HTML. Jika tidak, akan terjadi kesalahan.
akan terjadi karena klien Web adalah peramban, ia hanya memahami data HTTP yang valid (yaitu, MIME
header dan HTML).
Modul cgi
Ada satu kelas utama di modul cgi yaitu kelas FieldStorage.
Kelas ini harus diinstansikan ketika skrip CGI Python dimulai, karena akan membaca semua
informasi pengguna yang relevan dari Klien Web (melalui server Web).
Setelah objek ini diinstansiasi, itu akan terdiri dari objek mirip kamus yang memiliki
sekelompok pasangan kunci-nilai. Kuncinya adalah nama-nama item formulir yang diteruskan dalam
Lastly, they can be a list of such [Link] occurs when a form containsmore than
satu item input dengan nama bidang yang sama.
Untuk formulir Web sederhana, Anda biasanya akan menemukan semua contoh MiniFieldStorage.
Membangun Aplikasi CGI:
1. Mengatur Server Web
2. Membuat Halaman Formulir
3. Menghasilkan Halaman Hasil
4. Situs Web Sepenuhnya Interaktif
konfigurasikan untuk menangani permintaan PythonCGI, dan kemudian berikan akses ke server Web
Jika Anda ingin server Web yang nyata, Anda kemungkinan akan mengunduh dan menginstal Apache. Ada
Ini akan memulai server Web di port 8000 di mesin Anda saat ini dari saat ini.
direktori. Maka Anda bisa langsung membuat aCgi-bin tepat di bawah direktori dari mana Anda
memulai server dan meletakkan skrip CGI Python Anda di sana.
Letakkan beberapa file HTML di direktori itu dan mungkin beberapa skrip .py CGI di Cgi-bin, dan Anda
siap untuk "berselancar" langsung ke situs Web ini dengan alamat yang terlihat seperti ini:
[Link]
[Link]
2. Membuat Halaman Formulir
File HTML ini ([Link]) menyajikan sebuah formulir kepada pengguna dengan bidang kosong untuk
nama pengguna dan serangkaian tombol radio untuk dipilih oleh pengguna.
Seperti yang Anda lihat di dalam kode,
1 <HTML><HEAD><TITLE>
Demo CGI 2 Teman (layar statis) formulir berisi dua input
3 </TITLE></HEAD> variables: person and how
4 <BODY><H3>Daftar teman untuk: <I>PENGGUNA BARU</I></H3>
banyak. Nilai dari kedua ini
5 <FORM ACTION="/cgi-bin/[Link]">
bidang akan diteruskan ke kami
6 <B>Masukkan Nama Anda:</B>
Skrip CGI, [Link].
7 <INPUT TYPE=text NAME=personVALUE="PENGGUNA BARU" SIZE=15>
Berapa banyak teman yang kamu punya?
9 <INPUT TYPE=radio NAME=howmanyVALUE="0" CHECKED> 0
10 <INPUT TYPE=radio NAME=howmanyVALUE="10"> 10
11 <INPUT TYPE=radio NAME=howmanyVALUE="25"> 25
12 <INPUT TYPE=radio NAME=howmanyVALUE="50"> 50
13 <INPUT TYPE=radio NAME=howmanyVALUE="100"> 100
14 <P><INPUT TYPE=submit></FORM></BODY></HTML>
[Link] Halaman Hasil:
Input dimasukkan oleh pengguna dan tombol "Kirim" ditekan.
Ketika ini terjadi, skrip di [Link] dijalankan melalui CGI.
Skrip CGI ini mengambil informasi tentang orang dan berapa banyak bidang dari formulir dan menggunakan data tersebut
dengan asumsi pengguna mengetikkan "erick allen" sebagai nama dan mengklik pada radio "10 teman"
tombol.
4. Situs Web Sepenuhnya Interaktif:
Seorang pengguna memasukkan informasi mereka dari halaman formulir. Kami kemudian memproses data tersebut dan
Sekarang, kami akan menambahkan tautan ke halaman hasil yang akan memungkinkan pengguna untuk kembali ke formulir
halaman, tetapi alih-alih menampilkan formulir kosong, kami akan mengisi data yang telah dimiliki pengguna
sudah disediakan.
CGI Lanjutan
CGI canggih ini termasuk penggunaan cookie data yang disimpan di sisi klien
beberapa nilai untuk bidang CGI yang sama dan unggah file menggunakan pengiriman formulir multipart.
Menggunakan Cookie dalam CGI
Untuk situs web komersial, diperlukan untuk memelihara informasi sesi di antara yang berbeda
halaman.
Sebagai contoh, satu pendaftaran pengguna berakhir setelah menyelesaikan banyak halaman. Bagaimana cara mempertahankan?
Dalam banyak situasi, menggunakan cookie adalah metode paling efisien untuk mengingat dan
melacak preferensi, pembelian, komisi, dan informasi lain yang diperlukan untuk yang lebih baik
pengalaman pengunjung atau statistik situs.
Bagaimana Cara Kerjanya?
Ketika server mengirimkan beberapa data ke browser pengunjung dalam bentuk cookie. Browser
mungkin menerima cookie. Jika iya, itu disimpan sebagai catatan teks biasa di hard disk pengunjung
mengemudikan.
Sekarang, ketika pengunjung tiba di halaman lain di situs Anda, cookie tersedia untuk
pengambilan. Setelah diambil, server Anda mengetahui/mengingat apa yang disimpan.
Cookie adalah catatan data teks biasa yang terdiri dari 5 bidang dengan panjang variabel -
Kedaluwarsa− Tanggal cookie akan kedaluwarsa. Jika ini kosong, cookie akan kedaluwarsa saat
pengunjung keluar dari browser.
Name=Value− Cookies are set and retrieved in the form of key and value pairs.
Mengatur Cookies
Sangat mudah untuk mengirim cookie ke browser. Cookie ini dikirim bersama dengan HTTP.
Header sebelum ke field Content-type. Dengan asumsi Anda ingin mengatur UserID dan Password sebagai
kue kering.
Pengaturan cookie dilakukan sebagai berikut −
Mengatur atribut cookies seperti Expires, Domain, dan Path adalah opsional.
Perlu dicatat bahwa cookie disetel sebelum baris "Content-type:text/html ".
Mengambil Cookie:
Sangat mudah untuk mengambil semua cookie yang disetel. Cookie disimpan di lingkungan CGI.
variableHTTP_COOKIEdan mereka akan memiliki bentuk berikut −
key1 = value1;key2 = value2;key3 = value3....
Berikut adalah contoh cara mengambil cookie.
Ini menghasilkan hasil berikut untuk cookie yang disetel oleh skrip di atas −
User ID = XYZ
Password = XYZ123
Unggah Berkas:
To upload a file, the HTML form must have theenctype attributeset tomultipart/form-data.
Tag input dengan tipe file membuat tombol "Telusuri".
Berikut adalah skrip save_file.py untuk menangani unggahan file -
Bidang Multivalu
cara memproses bidang dengan beberapa nilai.
ketika Anda memiliki serangkaian kotak centang yang memungkinkan pengguna untuk memilih dari berbagai pilihan.
Setiap kotak centang diberi label dengan nama bidang yang sama, tetapi untuk membedakannya,
setiap akan memiliki nilai yang berbeda yang terkait dengan kotak centang tertentu.
As you know, the data from the user are sent to the server inkey-value pairsduring
form submission.
When more than one checkbox is submitted, you willhave multiple values
terkait dengan kunci yang sama. Dalam kasus ini, alih-alih diberikan satu
Instansi MiniFieldStorage untuk data Anda, modul cgi akan membuat daftar seperti itu
instans yang akan Anda iterasi untuk mendapatkan nilai yang berbeda.
Server Web (HTTP):
Server web HTTP hanyalah sebuah proses yang berjalan di mesin Anda dan melakukan
tepat dua hal:
1- Mendengarkan permintaan http yang masuk pada alamat soket TCP tertentu (alamat IP
dan nomor port)
2- Menangani permintaan ini dan mengirimkan respon kembali kepada pengguna.
Server web dasar adalah item boilerplate, yang harus ada. Perannya adalah untuk melakukan
komunikasi HTTP yang diperlukan antara klien dan server.
Kelas server dasar disebut (secara tepat) HTTPServer dan ditemukan di
modul BaseHTTPServer.
Pengendali adalah bagian perangkat lunak yang melakukan sebagian besar "Layanan Web."
Ini memproses permintaan klien dan mengembalikan file yang sesuai, baik statis atau
dihasilkan secara dinamis oleh CGI.
HEADpermintaan.
permintaan. Ini memiliki kemampuan untuk memanggil skrip CGI untuk melakukan pemrosesan yang diminta dan
Modul Description
BaseHTTPServer Menyediakan kelas server Web dasar dan kelas pengolah dasar,
Saya sebutkan sebelumnya, Pertama, server web adalah proses yang mendengarkan permintaan masuk pada
alamat TCP spesifik. alamat TCP diidentifikasi oleh alamat IP dan nomor port.
Kedua, server web juga perlu diberitahu bagaimana menangani permintaan yang masuk.
Permintaan yang masuk ini ditangani oleh penangkap khusus. Anda dapat menganggapnya sebagai web
server sebagai pengirim, sebuah permintaan datang, server http memeriksa permintaan dan
mengirimkannya ke pengurus yang ditunjuk.
Contoh: Membuat server web
impor [Link]
mengimpor socketserver
PORT = 8080
Handler = [Link]
dengan [Link](("", PORT), Handler) sebagai httpd:
kelas [Link]: Sebuah instance dari TCPServer menggambarkan sebuah server yang
menggunakan protokol TCP untuk mengirim dan menerima pesan.
Untuk menginstansiasi sebuah Server TCP, kita memerlukan dua hal:
Alamat TCP dikirim sebagai tuple dari (alamat ip, nomor port)
Kami mengoper string kosong sebagai alamat IP berarti bahwa server akan mendengarkan
pada antarmuka jaringan mana pun (semua alamat IP yang tersedia).
PORT menyimpan nilai 8080, maka server akan mendengarkan permintaan yang masuk pada
pelabuhan itu.
Serve_forever adalah metode pada instance TCPServer yang memulai server dan mulai
mendengarkan dan menanggapi permintaan yang masuk.
simpan file ini sebagai [Link] di direktori yang sama dengan [Link]
<html>
<kepala>
<title>Python is awesome!</title>
</head>
<body>
<h1>Afternerd</h1>
<p>Selamat! Server HTTP berfungsi!</p>
</body>
</html>
Di direktori itu, mulai server web:
$ python [Link]
melayani di port 8080
Sekarang kita memiliki server HTTP yang mendengarkan di semua antarmuka pada port 8080 yang menunggu untuk