Cara menggunakan widget grafik dalam skrip bash dengan Zenity
- 870
- 260
- Dale Harris II
Zenity adalah utiliti yang sangat berguna yang membolehkan kita membuat antara muka pengguna grafik untuk skrip shell kami. Beberapa widget wujud, dan boleh digunakan dengan menggunakan program dengan pilihan masing -masing. Widget berdasarkan pada Gtk
toolkit, dan kembalikan hasil interaksi pengguna sama ada pada output standard atau sebagai kod pulangan.
Dalam tutorial ini anda akan belajar:
- Apakah pilihan Zenity Umum
- Apakah beberapa widget yang paling berguna dan cara menggunakannya
Keperluan perisian dan konvensyen yang digunakan
Kategori | Keperluan, konvensyen atau versi perisian yang digunakan |
---|---|
Sistem | Pengedaran-bebas |
Perisian | Utiliti zenity |
Yang lain | Kebiasaan dengan shell (bash dalam kes ini) dan konsep seperti kod subshell dan keluar |
Konvensyen | # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak |
Pemasangan
The Zenity
Pakej dimasukkan ke dalam repositori semua pengagihan Linux utama, dan mungkin sudah dipasang jika anda menggunakan Gnome
persekitaran desktop. Untuk memasangnya, kami boleh menggunakan pengurus pakej pengedaran kegemaran kami, di Fedora
, Contohnya, kita boleh menggunakan DNF
:
$ sudo DNF memasang zenity
Apabila menggunakan pengagihan berasaskan Debian dan Debian seperti Ubuntu, kita boleh menggunakan perintah apt-get:
$ sudo apt-get pemasangan zenity
Zenity sudah termasuk dalam archlinux tambahan
repositori, oleh itu kita boleh memasangnya melalui Pacman
:
$ sudo pacman -s Zenity
Pilihan generik
Sebelum kita mula melihat beberapa widget yang paling berguna yang disediakan oleh Zenity
, Kita harus menyebut beberapa pilihan generik yang ada yang boleh kita gunakan untuk mengubah tingkah laku program.
Kami memanggil mereka generik kerana mereka boleh digunakan secara bebas daripada widget yang dipilih: --tajuk
, --janda-icon
, --lebar
, --ketinggian
dan --masa tamat
.
Pertama sekali kita mempunyai --tajuk
Pilihan: Kami boleh menggunakannya untuk menentukan tajuk untuk tetingkap dialog. Begitu juga, --tingkap-icon
pilihan mari kita nyatakan ikon yang akan digunakan sebagai ikon untuk tetingkap, dan akan dapat dilihat, sebagai contoh, dalam bar tugas. Untuk memaparkan ikon dalam widget, sebaliknya, kita boleh menggunakan --nama ikon
pilihan dan berikan salah satu nama ikon yang dibenarkan (di sini adalah senarai lengkap) sebagai argumen. Untuk menggunakan ikon stok yang disediakan dalam dialog kesilapan, maklumat, soalan, atau amaran, sebagai contoh, kita boleh menentukan masing -masing: Kesilapan dialog
, dialog-info
, Soalan dialog
atau Perjamuan dialog
.
The --lebar
dan --ketinggian
Pilihan cukup jelas: mereka membiarkan kami menentukan geometri tetingkap dialog kami.
Akhirnya, dengan menggunakan --masa tamat
pilihan kita boleh menetapkan masa tamat dalam beberapa saat untuk dialog: Setelah jumlah masa yang ditentukan, ia akan ditutup secara automatik.
Widget yang ada
Terdapat beberapa widget yang boleh kita gunakan terima kasih kepada Zenity: masing -masing mempunyai tujuan tertentu. Mari lihat sebahagian daripada mereka.
Widget kalendar
Widget kalendar akan memaparkan kalendar dan biarkan pengguna memilih tarikh, dengan memilih bulan, hari dan tahun. Nilai yang dipilih akan dikembalikan di output standard
. Untuk melancarkan kalendar widget, semua yang kita perlu hendaklah untuk memanggil Zenity, dengan --kalendar
pilihan:
$ zenity -kalendar
Kita boleh menggunakan satu siri pilihan untuk menyempurnakan tingkah laku widget, sebagai contoh, dengan menggunakan --hari
, --bulan
, --tahun
dan menyediakan Int
Sebagai nilai, kita boleh menetapkan, masing -masing, hari lalai, bulan dan tahun yang akan dipaparkan dalam widget. Untuk menentukan format tertentu di mana tarikh yang dipilih harus dikembalikan, kita boleh menggunakan --Tarikh
pilihan dan tentukan corak di strftime
gaya.
Widget kalendar
Widget kemasukan
Widget entri sangat berguna apabila kita perlu meminta pengguna untuk beberapa teks. Katakanlah contohnya kita perlu meminta pengguna memasukkan namanya; Kita boleh menjalankan arahan berikut:
$ Zenity --Entry --Title "Permintaan Nama" --Text "Sila masukkan nama anda:"
Di sini kami menggunakan --tajuk
dan --Teks Kemasukan
pilihan untuk menyesuaikan, masing -masing, tajuk dan label yang untuk widget. Sebaik sahaja kita menjalankan arahan di atas, widget akan muncul:
Widget kemasukan
Teks yang dimasukkan oleh pengguna akan kembali ke output standard.
Widget pemilihan fail
Widget Pemilihan Fail Mari kita memaparkan antara muka grafik yang bagus untuk membiarkan pengguna memilih satu atau lebih fail. Sama seperti yang kita lakukan dalam contoh sebelumnya, kita boleh menggunakan siri pilihan untuk mengubah suai tingkah laku dan penampilan dialog. Salah satu yang paling penting ialah --nama fail
yang boleh digunakan untuk menetapkan fail/direktori yang akan dipilih secara lalai. Berikut adalah gambaran ringkas mengenai pilihan dan fungsi yang mereka berikan:
Pilihan | Fungsi |
---|---|
-nama fail | Tetapkan direktori/fail lalai yang akan dipilih dalam widget |
-pelbagai | Dayakan keupayaan untuk memilih beberapa fail sekaligus |
-penapis fail | Tentukan penapis untuk nama fail |
-direktori | Hadkan pemilihan ke direktori |
-Simpan | Jalankan widget dalam mod "Simpan". |
-mengesahkan-overwrite | Tanya pengguna untuk pengesahan semasa menimpa fail yang ada |
-pemisah | Tentukan pemisah yang akan digunakan untuk memisahkan laluan apabila banyak fail dipilih |
Mari lihat contoh penggunaan widget. Katakan kami mahu membiarkan pengguna memilih pelbagai fail, dan kami mahukan kandungan pengguna $ Rumah
direktori yang akan dipaparkan dalam widget apabila dibuka. Yang harus kita lakukan ialah menjalankan arahan berikut:
$ zenity--file-selection--ultiple--filename "$ home/"
Anda dapat melihat bahawa kami memberikan ketinggalan /
ke jalan: Dengan cara ini kandungan direktori dipaparkan, bukannya direktori itu sendiri. Inilah widget kami:
Widget pemilihan fail
Sebaik sahaja kita mengklik butang "OK", laluan mutlak fail yang dipilih akan dikembalikan pada output standard, dipisahkan oleh watak, yang menjadi lalai adalah |
:
/rumah/egdoc/muat turun/a.txt |/home/egdoc/muat turun/b.txt
Kita dapat dengan mudah mengubah pemisah, memberikan watak yang ingin kita gunakan sebagai argumen pilihan -separator.
Sekiranya kita membuka dialog di Simpan mod
, Pengguna akan diminta memberikan nama fail yang dia mahu simpan. Sekiranya fail wujud dan kami menyediakan --mengesahkan-overwrite
pilihan, dia akan diminta untuk mengesahkan dia mahu menimpanya:
$ Zenity-File-Selection--Save --confirm-overwrite--filename "$ home/"
Laluan yang dipilih akan dikembalikan kepada output standard, dan kami akan bebas menggunakannya dalam skrip kami.
Widget kemajuan
Widget lain yang menarik adalah kemajuan: kita boleh melancarkannya dengan menggunakan zenity dengan --kemajuan
pilihan. Kita boleh menggunakannya, sebagai contoh, untuk menunjukkan kemajuan operasi jangka panjang. Berikut adalah beberapa pilihan yang paling berguna yang boleh kita gunakan dengan widget:
Pilihan | Fungsi |
---|---|
-peratusan | Menetapkan nilai peratusan awal bar kemajuan |
-Auto-Close | Secara automatik tutup dialog apabila kemajuan selesai |
-Auto-Kill | Bunuh proses induk jika dialog ditutup dengan membatalkan butang |
-tidak membatalkan | Jangan paparkan butang Batal |
Berikut adalah contoh bagaimana kita boleh menggunakan widget dalam skrip bash:
#!/Bin/Bash # # Skrip Dummy Untuk Menunjukkan Widget Kemajuan Zenity! (echo 25 echo "# siap ..." tidur 2 echo 30 echo "# membaca fail ..." tidur 2 echo 70 echo "# mencipta kandungan ..." tidur 1 echo 100 echo "# selesai!") | Zenity --Title" Progress Bar Example "-Progress --auto-Kill
Salinan Skrip di atas sebenarnya tidak melakukan sebarang operasi, tetapi berguna untuk memahami bagaimana widget berfungsi. Terdapat dua perkara utama yang harus diperhatikan dalam kod: pertama sekali, perintah yang akan dilaksanakan dibungkus antara kurungan, oleh itu dilaksanakan dalam a Subshell
: Ini adalah perlu untuk widget berfungsi dengan betul; Kedua, apabila kita bergema garis bermula dengan nombor, ini akan ditafsirkan sebagai peratusan bar kemajuan.
Dengan cara yang sama, ketika kita bergema garis yang bermula dengan #
watak, ia akan digunakan sebagai teks yang akan dipaparkan dalam widget. Berikut adalah video pendek skrip dalam tindakan:
Widget Maklumat, Amaran dan Ralat
Untuk memaparkan maklumat, amaran atau mesej ralat, kita boleh menggunakan zenity dengan --maklumat
, --amaran
dan --ralat
Pilihan, masing -masing. Dalam kes ini kita menggunakan --teks
pilihan untuk menentukan mesej. Berikut adalah contoh pemberitahuan:
$ zenity - -info --width = 400 -height = 200 --text "Ini adalah pemberitahuan!"
Widget pemberitahuan
Menggunakan widget amaran, sama mudahnya:
$ zenity --warning --width = 400 -height = 200 --text "Ini adalah amaran!"
Widget amaran
Ini, sebaliknya adalah contoh mesej ralat:
$ zenity --error --width = 400 -height = 200 --text "Ini adalah ralat!"
Widget ralat
Widget soalan
Untuk mengemukakan soalan kepada pengguna dan mendapatkan jawapannya, kami boleh menggunakannya soalan
widget, menggunakan Zenity dengan --soalan
pilihan. Kami menentukan soalan menggunakan --teks
pilihan, dan tentukan label butang 'ok' dan 'membatalkan', menggunakan masing -masing --ok-label
dan --Batalkan label
pilihan. Berikut adalah contoh:
$ zenity --question --text "Adakah anda pasti mahu berhenti?"--no-wrap --ok-label" ya "--cancel-label" no "
Widget soalan
Dalam kes ini, kami juga menggunakan --Tidak ada
pilihan, untuk mengelakkan pembungkus teks dalam widget. Hasil pilihan pengguna tidak akan dipaparkan pada output standard; Sebaliknya, arahan akan menetapkannya Kod Keluar
Oleh itu, jadi ia akan kembali 0
Sekiranya pengguna mengklik butang 'ok', dan 1
Jika dia mengklik pada 'Batalkan' satu atau menutup tetingkap (ini mungkin kelihatan kontra-intuitif, tetapi ingat daripada kod keluar 0 bermakna perintah dilaksanakan dengan kejayaan dalam shell).
Widget kata laluan
Ini adalah widget yang harus kita gunakan apabila kita mahu pengguna memasukkan kata laluan atau maklumat sensitif: teks yang dimasukinya bertopeng oleh peluru:
Widget kata laluan
Semasa teks yang dimasukkan dari pengguna bertopeng, nilai yang dikembalikan oleh widget akan kelihatan jelas pada output standard.
Widget pemilihan warna
Ini adalah satu lagi widget yang bagus. Dengan menggunakannya, kita boleh membuat pengguna memilih warna dari palet. Untuk menjalankannya, kami menggunakan Zenity dengan --pemilihan warna
pilihan. Kita dapat menentukan warna yang dipilih pada mulanya dengan menggunakan --warna
dan memberikan warna sebagai hujah. Berikut adalah contoh:
Widget pemilihan warna
Secara pilihan, kita boleh memaparkan palet warna sebaliknya, dengan --Show-Palette
pilihan:
$ zenity-color-selection-warna merah-show-palette
Palet widget pemilihan warna
Warna yang dipilih oleh pengguna akan dikembalikan rgb
Notasi mengenai output standard. Contohnya apabila memilih warna merah, yang berikut akan dikembalikan:
RGB (255,0,0)
Widget senarai
Widget seterusnya yang akan kita lihat, adalah widget senarai. Dengan itu, ada kemungkinan untuk membuat dialog berbilang lajur, dan secara pilihan membiarkan pengguna memilih satu atau berbilang pilihan melalui kotak semak atau butang radio. Untuk menjadikan zenity memaparkan jenis dialog ini, kami menggunakan --senarai
pilihan dan tentukan lajur dan kandungannya; Sekiranya kita menghilangkannya, perintah itu akan gagal:
$ zenity -list tiada tajuk lajur yang ditentukan untuk dialog senarai.
Salinan Untuk menentukan tajuk lajur, kami menggunakan --kolum
pilihan dan berikan rentetan sebagai hujah. Kami mengulangi arahan untuk setiap lajur yang ingin kami buat:
$ zenity -list -lajur pemilihan -pengedaran kolumn
Dengan arahan di atas kami membuat dua lajur, dengan tajuk "Pemilihan" dan "Pengedaran". Sekarang kami akan menyediakan pengguna dengan satu siri baris, masing -masing mewakili taburan Linux. Dalam lajur pertama setiap baris kami akan meletakkan kotak semak untuk membiarkan pengguna memilih entri yang sepadan:
$ zenity -list -column Selection -column pengedaran palsu debian fedora sebenar -radiolist
Setiap rentetan yang kami sediakan selepas definisi lajur dikaitkan dengan lajur, bergantung pada urutan penampilan mereka. Seperti yang anda lihat, kami membuat dua baris. Dalam lajur pertama setiap baris kami memberikan nilai: kami menggunakan SALAH
supaya kotak semak atau butang radio yang sepadan tidak dipilih apabila widget dipaparkan, dan Benar
Untuk menetapkan input seperti yang ditandakan secara lalai. Inilah widget yang dihasilkan:
Widget senarai
Apabila kita mengklik butang "OK", dan lakukan pemilihan kami, nilai yang berkaitan dengan baris akan dilaporkan pada output standard. Sekiranya kita mahu membiarkan pengguna memilih berbilang baris, kita boleh menggunakannya --senarai semak
Pilihan: | | watak akan digunakan untuk memisahkan nilai yang dipilih.
Kesimpulan
Dalam tutorial ini, kami belajar tahu Zenity
, utiliti yang membolehkan kami menggunakan dialog grafik dalam skrip shell kami. Kami melihat apakah pilihan generik yang boleh kita gunakan dengan semua widget, seperti --lebar
dan --ketinggian
, Dan kami belajar menggunakan beberapa widget yang paling berguna yang dapat kami hasilkan dengan program ini. Untuk mengetahui lebih lanjut mengenai Zenity
anda boleh berunding dengan manpage!
Tutorial Linux Berkaitan:
- Pengenalan kepada Automasi, Alat dan Teknik Linux
- Menguasai Gelung Skrip Bash
- Perkara yang hendak dipasang di Ubuntu 20.04
- Gelung bersarang dalam skrip bash
- Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
- Mengendalikan input pengguna dalam skrip bash
- Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
- Tutorial Debugging GDB untuk Pemula
- Fail Konfigurasi Linux: 30 teratas yang paling penting
- Sistem Hung Linux? Cara melarikan diri ke baris arahan dan ..
- « Cara Memperluas Pengurus Fail Gnome Nautilus dengan skrip tersuai
- Pengenalan kepada Paparan SQL Pangkalan Data MySQL/MariaDB »