Banyak orang menggunakan Notebook Jupyter dalam pekerjaan mereka. Tetapi dengan meningkatnya kompleksitas proyek, masalah muncul. Sel muncul di notebook dengan tanda merah untuk dirinya sendiri: "menunjukkan nomor sebelum memulai ..." atau "mengatur jumlah iterasi berdasarkan ...". Beberapa jenis rollback ke baris perintah diperoleh.
Dan output data ke layar tidak selalu dirasakan tanpa penjelasan oleh orang luar yang terbiasa dengan tabel yang indah, gambar dan elemen antarmuka modern lainnya.
Sebagai contoh, kami memiliki data tentang area kota dan populasi. Kami menampilkannya dalam "bentuk tradisional":
tabledata = [["", 2561, 12615882], ["-", 1439, 5383890], ["", 205, 609828], ["", 383, 1321473]] tabledata 
Kita lihat di buku catatan:
 [['', 2561, 12615882], ['-', 1439, 5383890], ['', 205, 609828], ['', 383, 1321473]] 
Orang yang modern dan manja tidak selalu menyukai format tampilan ini. Hal ini diperlukan untuk membawa data ke bentuk tabel yang lebih akrab.
Anda dapat menggunakan perpustakaan panda yang tersebar luas
 import pandas as pd pd.DataFrame(tabledata, columns=[""," (. )", " ()"]) 

Jika karena alasan tertentu menggunakan panda tidak cocok untuk Anda, Anda dapat menggunakan pustaka lain atau menulis fungsi Anda sendiri.
Pertimbangkan salah satu perpustakaan ini - tabulasi (https://pypi.org/project/tabulate/)
Untuk menginstal, jalankan 
pip install tabulate dari baris perintah
 from IPython.display import HTML, display from tabulate import tabulate display(HTML(tabulate(tabledata, tablefmt='html'))) 

Anda dapat menampilkan data dalam bentuk "pseudografis".
 print(tabulate(tabledata)) 

Anda dapat menambahkan tajuk
 print(tabulate(tabledata, headers=[""," (. )", " ()"])) 

Dan indeks
 display(HTML(tabulate(tabledata, headers=[""," (. )", " ()"], tablefmt='html', showindex="always"))) 

tabulate memungkinkan Anda secara visual mendapatkan hasil yang sama dengan panda.
Anda dapat menulis fungsi Anda sendiri, yang kemudian akan mendapatkan fitur tambahan.
 from IPython.display import HTML, display def dataToTable(data, columns = None): if len(data) == 0 : display(HTML('<b> </b>')) return hdr = '' if columns != None: for col in columns:  

Output gambar
Kami terbiasa dengan pictograms dan ikon. Bahkan dalam ramalan cuaca, kita melihat gambar dengan matahari dan awan. Untuk menambahkan gambar ke program kami, Anda dapat menggunakan perpustakaan IPython. Fungsi Image-nya memungkinkan Anda untuk bekerja dengan gambar (PNG / JPEG / GIF) yang terletak baik secara lokal maupun pada sumber daya Internet. Atur ukurannya.
Deskripsi perpustakaan ada di sini 
ipython.readthedocs.io/en/stable/api/generated/IPython.display.html?highlight=display#IPython.display.Image from IPython.display import Image  
Kagumi python:

Hiasi teksnya
Tentu saja, Anda dapat menghasilkan HTML secara langsung menggunakan semua fitur-fiturnya:
 from IPython.core.display import display, HTML display(HTML("<font color='green'>  </font>")) 

Atau Anda dapat menggunakan pustaka termcolor. Itu memungkinkan, tanpa mempelajari HTML, untuk mengatur warna teks dan latar belakang, untuk mengatur atribut font. Deskripsi perpustakaan di sini - 
pypi.org/project/termcolor from termcolor import colored  

Kami menampilkan progres tugas
Tidak ada yang suka mengikuti kemajuan tugas yang panjang tanpa memahami bagian pekerjaan yang telah diselesaikan.

Melihat berapa banyak yang tersisa jauh lebih baik (ya, ya, saya tahu bahwa kecepatan "cacing" dapat bervariasi).

Deskripsi perpustakaan di sini - 
ipywidgets.readthedocs.ioGunakan perintah untuk menginstal
 pip install ipywidgets jupyter nbextension enable --py widgetsnbextension 
 from ipywidgets import IntProgress from IPython.display import display import time prgBar = IntProgress(min = 0, max = 100)  

Interaksi pengguna interaktif
Pustaka ipywidgets yang sama memungkinkan tidak hanya menampilkan, tetapi juga memasukkan informasi.
Contoh interaksi pengguna yang paling sederhana adalah reaksi terhadap klik tombol. Pustaka ipywidgets memungkinkan Anda membuat tombol dengan parameter yang diberikan (teks, gaya dan ukuran) dan menetapkan fungsi penangan untuk menekannya.
 from IPython.display import display from ipywidgets import Button  

Ukuran tombol diatur menggunakan properti tata letak
 from IPython.display import display from ipywidgets import Button, Layout button2 = Button(description='   ', button_style='success', layout=Layout(width='50%', height='80px')) display(button2) 

Untuk input angka dan tanggal yang mudah bagi pengguna, ada komponen FloatSlider dan DatePicker.
Untuk mendapatkan nilai yang dimasukkan, gunakan properti <component> .value
Untuk menangkap momen perubahan nilai, perlu menggunakan event observ
 from IPython.display import display from ipywidgets import FloatSlider fSlider = FloatSlider( value=7.5,  

Periksa akses ke nilai saat ini:
 fSlider.value 
Kalender interaktif:
 from IPython.display import display from ipywidgets import DatePicker dPicker = DatePicker( description=':' ) def on_button_clicked(b): print(b['old'], '->', b['new']) dPicker.observe(on_button_clicked, names='value') display(dPicker) 

Untuk memilih satu nilai dari beberapa opsi, ada daftar RadioButtons, daftar turun bawah dan sekelompok tombol ToggleButtons. nilai dan amati digunakan dengan cara yang sama untuk komponen-komponen ini.
Nilai dapat ditentukan baik sebagai daftar nilai string atau sebagai daftar tupel.
Mari kita coba opsi yang paling sederhana, dengan nilai-nilai dalam bentuk daftar string.
 from IPython.display import display from ipywidgets import RadioButtons rButtons1 = RadioButtons( options=['', '', ''], value='',  

Kami menampilkan nilainya:
 rButtons1.value 
Dalam mode ini, nilai rButtons1.value adalah string.
Kami mencoba opsi kedua mengatur daftar nilai:
 from IPython.display import display from ipywidgets import RadioButtons rButtons2 = RadioButtons( options=[('', 1), ('', 2), ('', 3)], value=2,  

Dalam mode ini, nilai rButtons2.value adalah angka yang sesuai dengan nilai yang dipilih.
Daftar dropdown bekerja dengan cara yang sama
 from IPython.display import display from ipywidgets import Dropdown dropdown1 = Dropdown( options=[('', 1), ('', 2), ('', 3)], value=2,  

Anda dapat menggunakan Kotak Centang dan ToggleButton untuk memasukkan nilai boolean. Mereka memiliki nilai dan mengamati sudah akrab bagi kita.
 from IPython.display import display from ipywidgets import Checkbox cb1 = Checkbox( value=False, description='' ) def on_button_clicked(b): print(cb1.value) cb1.observe(on_button_clicked, names='value') display(cb1) 

 from IPython.display import display from ipywidgets import ToggleButton tb1 = ToggleButton( value=False, description=' ', disabled=False, button_style='success',  

Untuk memasukkan teks multiline, komponen Textarea digunakan.
 from IPython.display import display from ipywidgets import Textarea, Layout Textarea1 = Textarea( value=', Habr!', placeholder=' ', description=':', layout=Layout(width='600px', height='100px') ) display(Textarea1) 

AI (kelezatan antarmuka)
Ketika ada terlalu banyak elemen antarmuka, saya ingin mengikuti jalur aplikasi desktop dan menggabungkan masing-masing elemen menjadi kelompok yang terpisah.
Untuk ini, Accordion dan Tab berguna.
 from IPython.display import display from ipywidgets import Accordion, IntSlider, Text accordion = Accordion(children=[IntSlider(value=42), Text(value=' ')]) accordion.set_title(0, ' 1') accordion.set_title(1, ' 2') display(accordion) 

 from IPython.display import display from ipywidgets import Tab, IntSlider, Text tab = Tab() tab.children = [IntSlider(value=42), Text(value=' ')] tab.set_title(0, ' 1') tab.set_title(1, ' 2') display(tab) 

Pustaka ipywidgets tidak terbatas pada elemen yang telah saya daftarkan. Masih memiliki banyak hal berguna yang dapat membuat program di Notebook Jupyter lebih menarik.
Lihat di sini