Apakah ada perangkat widget UI yang bagus untuk Pygame? [Tutup]

8

Apakah ada widget alat modern dan bagus untuk Pygame? Saya telah melihat PGU , tetapi tampaknya tidak terawat.

Nathon
sumber

Jawaban:

11

Tidak. Setiap tahun seseorang membuat perpustakaan UI Pygame baru dan kemudian meninggalkannya setelah beberapa versi, mungkin begitu mereka menyadari bahwa tata letak tombol penulisan itu mudah tetapi menulis perpustakaan UI lengkap adalah pekerjaan nyata. The guitag di situs Pygame kronik beberapa.


sumber
8

Kembali pada Januari 2011, saya melihat lima toolkit GUI untuk pygame, dan mencoba membuat semuanya bekerja dengan Python 3. Kelimanya adalah: Albow, GooeyPy, PGU, pqGUI, dan sgc.

Saya tidak berhasil dengan GooeyPy , tetapi saya berhasil membuat empat lainnya bekerja dengan Python 3. (Saya juga ingin mencoba poutine, oleh Shandy Brown, tetapi saya tidak dapat menemukannya, dan saya sepenuhnya mengabaikan Ocemp.)

Sayangnya, Albow dan Ocemp tampaknya sudah mati. Albow terakhir diperbarui pada 2009, dan Ocemp terakhir diperbarui pada 2008. (Perhatikan bahwa versi Albow di pygame.org bukan yang terbaru.)

PGU (Phil's Pygame Utilities) telah diambil alih dan dikelola oleh Peter Rogers, dan Victor Kam mengonversikan sebagian besar ke Python 3. Terakhir diperbarui Januari 2012, dan mungkin ditingkatkan sejak saya memeriksanya. (Perhatikan bahwa versi PGU di pygame.org bukan yang terbaru.)

sgc masih baru dan masih sangat tidak lengkap ketika saya melihatnya. Namun, saat ini sedang dikembangkan secara aktif, dan mungkin jauh lebih baik, sekarang. (Perhatikan bahwa versi sgc di pygame.org bukan yang terbaru.)

Saya menjalankan masing-masing dari lima melalui penghitung Lines-Of-Code sederhana untuk mengukur ukuran mereka:

Ini adalah hasilnya (pada Januari, 2011):

    Kode Albow min = 2810, maks = 4551 (maks = 162% dari min)
    Albow \ demo min = 453, maks = 649

    GooeyPy \ gooeypy min = 2034, maks = 3941 (maks = 194% dari min)
    GooeyPy \ example min = 178, maks = 351

    pgu \ pgu min = 2910, maks = 7047 (maks = 242% dari min)
    termasuk pgu \ pgu \ gui min = 1678, maks = 4638 (maks = 276% dari min)
    pgu \ example min = 822, maks = 2527

    pqGUI.py min = 1586, maks = 1834 (maks = 116% dari min)
    Example.py min = 178, maks = 225

    sgc (tidak lengkap) min = 889, maks = 1243 (maks = 140% dari min)

Dalam setiap kasus, angka "min" lebih mewakili dari "ukuran" toolkit, karena tidak menghitung spasi dan komentar. Ketika angka "max" sangat dekat dengan angka min, itu berarti tidak ada banyak spasi dan tidak banyak komentar dalam kode. pqGUI mencontohkan bahwa, karena hampir tidak memiliki komentar sama sekali (dan juga tidak ada dokumen), yang terlalu buruk, karena (IMO) itu membuat elemen GUI yang paling bagus.

Peringatan utama: dokumen tidak dihitung sebagai komentar! Itu membuat PGU, sgc & GooeyPy, yang memiliki dokumen, terlihat lebih gemuk dan kurang terdokumentasi dari pada yang sebenarnya, dibandingkan dengan Albow dan pqGUI, yang tidak memiliki dokumen.

Saya menyukai pqGUI karena saya menyukai tampilan widget yang dibuatnya, tetapi tidak didukung dan tidak didokumentasikan, dan saya tidak dapat menemukan penulisnya.

Dari lima, per Januari 2011, PGU adalah pemimpin yang jelas. Tetapi saya tidak puas dengan kelima-tiganya, jadi saya menulis sendiri. (Catatan: PGU & sgc keduanya telah diperbarui, dan mungkin ditingkatkan, sejak saya melihatnya.)

Per pengamatan masam Joe Wreschnig (di atas), toolkit GUI saya tidak lengkap, seperti yang lainnya. Tetapi ada beberapa hal yang terjadi untuk itu.

  • Ia bekerja dengan Python 2.6, 2.7, 3.1, 3.2, & mungkin 3.3.
  • Ini berbasis sprite, dan menggunakan acara pygame untuk komunikasi, sehingga dapat dengan mudah dimasukkan ke dalam program pygame yang ada, tanpa mengambil alih loop acara. Widget subkelas dari pygame.sprite.Sprite.
  • Ini mendukung formulir, tombol, kotak centang, kotak pesan modal & non-modal & kotak dialog, menu vertikal, kotak entri teks, dan slider (bilah gulir).
  • Ini dengan lancar menangani kontrol / widget yang tumpang tindih, memindahkan & mengubah ukuran widget, dan formulir di dalam formulir.

Namun, ini tidak memiliki beberapa kontrol penting yang mungkin Anda inginkan, seperti dialog file-open / combo-box, dan tabel. Kontrol yang ada terlihat bagus, tetapi fitur seperti bilah judul & bilah gulir adalah jumlah piksel yang tetap lebarnya, daripada lebar yang dapat disesuaikan. Kode ini dikomentari dengan baik, dan ada aplikasi demo dengan contoh penggunaan, tetapi tidak ada dokumentasi cara penggunaan yang tepat. Juga, ini pra-beta, jadi semuanya bisa berubah.

Hasil penghitung baris-kode untuk itu adalah:

    DavesGUI (w / kode demo) min = 2267, maks = 3055 (maks = 135% dari min)
     (tanpa kode demo) min = 2018, maks = 2644 (maks = 131% dari min)
     (tanpa dokumentasi komentar) min = 1442, maks = 2644 (maks = 183% dari min)

Jika, terlepas dari batasan itu, seseorang ingin mencobanya, maka hubungi saya melalui email. Tanyakan tentang "DavesGUI." Alamat email saya ada di sini: http://www.burtonsys.com/email/

Dave Burton
sumber
1

Saya baru-baru ini melihat pygtk digunakan dengan pygame dan itu berfungsi dengan sangat baik. Pastikan Anda menggunakan acara paparan dengan widget area menggambar gtk dan memperbarui data pygame pada setiap pass melalui loop utama gtk. Jika Anda ingin toolkit gui lengkap bekerja di dalam pygame itu tidak akan terjadi, tetapi jika Anda ingin toolkit gui lengkap digunakan dengan pygame maka Anda beruntung, pygtk adalah itu. Anda bahkan dapat menggunakan gtk menggunakan bahasa pemrograman C dan masih mengimpor pygame sebagai widget ke area gambar dan memperbarui pygame dengan python jika itu mengapungkan perahu Anda dan Anda menginginkan kecepatan turbocharged. Kenapa ribut, gunakan saja google dan temukan jawabannya kemudian implementasikan, tidak susah dan tidak ada masalah. Ngomong-ngomong, pygame benar-benar keren. Orang-orang itu telah melakukan begitu banyak pekerjaan di dalamnya, dan bekerja dengan sangat efisien, menakjubkan.

kong
sumber
0

Saya telah menambahkan elemen GUI yang sangat mendasar ke pustaka GameEngine saya: http://aharrisbooks.net/pythonGame/ch10/ (Termasuk dalam buku tentang pengembangan game dengan Python)

Saya membangun elemen GUI yang sangat sederhana berdasarkan sprite standar: label, tombol, label multi-line, dan mini-scroll-bar.

Alat-alat ini cukup mendasar, tetapi cukup untuk banyak kegunaan. Tentu saja, pustaka sepenuhnya open-source, jadi silakan memodifikasinya jika Anda mau. Elemen antarmuka satu pengguna yang saya belum tambahkan (belum) adalah widget input teks. Itu karena model acara jauh lebih kompleks untuk ini daripada model lain, dan saya berlari ke tenggat waktu.

Jangan ragu untuk bermain dengan itu (apakah Anda menggunakan buku atau tidak) dan beri tahu saya jika Anda mengalami masalah. Saya akan mencoba membantu.

Saya memiliki video kursus saya yang tersedia di http://synapse.cs.iupui.edu/Mediasite/Catalog/

Lihatlah kursus N451. Itulah pengembangan game.

Dua pi
sumber
Betulkah? " Elemen antarmuka satu pengguna"? Bagaimana dengan pohon, daftar, bilah menu, bilah geser, bilah kemajuan, pemintal, kotak kombo, jendela yang dapat diubah ukurannya, panel yang dapat diubah ukurannya, widget kaya teks, dan tab, hanya untuk beberapa nama? Perpustakaan Anda tidak berbeda dari setengah lusin perpustakaan lain yang juga tidak pernah selesai di pygame.org.
Wow. Itu adalah sentuhan yang marah, ya? Itulah elemen satu pengguna yang saya inginkan yang tidak saya tambahkan. Saya dapat membangun apa pun yang saya inginkan. Saya belum membangun yang lain karena saya tidak membutuhkannya. Anda bebas untuk menambahkan alat Anda sendiri ke kerangka kerja saya (yang dirancang agar dapat diperluas), atau membuat perangkat Anda sendiri. Jika Anda ingin mendukung saya untuk menyelesaikan proyek ini, saya bersedia membicarakannya. Namun, seperti kebanyakan pengembang, saya harus membayar tagihan, sehingga proyek yang bisa saya jalani mendapatkan prioritas tertinggi.
Dua pi
Itu tidak marah. Saya hanya menunjukkan proyek Anda tidak berbeda dengan PyUI atau PGU. Ini adalah API yang tidak dirawat untuk mengeluarkan tombol sederhana. Ini bukan "toolkit widget modern yang bagus".
Saya setuju dengan Anda bahwa perpustakaan lengkap tidak ada (dan saya pikir yang lain terlalu kompleks) Saya pikir jawabannya adalah untuk Anda membangun perpustakaan yang Anda inginkan daripada mengabaikan upaya mereka yang telah secara bebas memberi mereka bekerja untuk komunitas. Perpustakaan saya memang kecil, karena saya tidak butuh yang lain. Saya akan senang jika Anda ingin menambahkan fitur yang Anda inginkan ke perpustakaan ini atau lainnya, karena saya setuju perpustakaan GUI 'lengkap' bisa berguna. Namun, game biasanya tidak memiliki kebutuhan yang sama dengan aplikasi GUI lainnya.
Dua pi