Saya mencari efek yang sama seperti alert()
di JavaScript.
Saya menulis juru bahasa berbasis web sederhana sore ini menggunakan Twisted.Web. Anda pada dasarnya mengirimkan blok kode Python melalui formulir, dan klien datang dan mengambilnya serta menjalankannya. Saya ingin dapat membuat pesan popup sederhana, tanpa harus menulis ulang sejumlah besar kode wxPython atau TkInter boilerplate setiap saat (karena kode dikirimkan melalui formulir dan kemudian menghilang).
Saya sudah mencoba tkMessageBox:
import tkMessageBox
tkMessageBox.showinfo(title="Greetings", message="Hello World!")
tapi ini membuka jendela lain di latar belakang dengan ikon tk. Saya tidak menginginkan ini. Saya mencari beberapa kode wxPython sederhana tetapi selalu diperlukan untuk menyiapkan kelas dan memasuki loop aplikasi, dll. Apakah tidak ada cara sederhana dan mudah untuk membuat kotak pesan dengan Python?
Pernahkah Anda melihat easygui ?
sumber
Anda juga dapat memposisikan jendela lain sebelum menariknya sehingga Anda memposisikan pesan Anda
sumber
Kode yang Anda berikan baik-baik saja! Anda hanya perlu secara eksplisit membuat "jendela lain di latar belakang" dan menyembunyikannya, dengan kode ini:
Tepat sebelum kotak pesan Anda.
sumber
Modul PyMsgBox melakukan hal ini. Ini memiliki fungsi kotak pesan yang mengikuti konvensi penamaan JavaScript: alert (), confirm (), prompt () dan password () (yang merupakan prompt () tetapi menggunakan * saat Anda mengetik). Panggilan fungsi ini memblokir sampai pengguna mengklik tombol OK / Cancel. Ini adalah modul Python murni lintas platform tanpa ketergantungan.
Instal dengan:
pip install PyMsgBox
Penggunaan sampel:
Dokumentasi lengkap di http://pymsgbox.readthedocs.org/en/latest/
sumber
AssertionError: Tkinter is required for pymsgbox
pip
, tetapi pada kenyataannya sebagian dari lib diinstal dengan cara lain - menggunakan manajer paket sistem. Jadi saya menginstalpython-tk
menggunakan manajer paket saya. Saya menggunakan Python 2.7 di Debian.Di Windows, Anda dapat menggunakan ctypes dengan pustaka user32 :
sumber
Di Mac, pustaka standar python memiliki modul bernama
EasyDialogs
. Ada juga versi windows (berbasis ctypes) di http://www.averdevelopment.com/python/EasyDialogs.htmlJika penting bagi Anda: ini menggunakan dialog asli dan tidak bergantung pada Tkinter seperti yang telah disebutkan
easygui
, tetapi mungkin tidak memiliki banyak fitur.sumber
Angka terakhir (di sini 1) dapat diubah untuk mengubah gaya jendela (tidak hanya tombol!):
Sebagai contoh,
akan memberikan ini :
sumber
Menggunakan
Jendela master harus dibuat sebelumnya. Ini untuk Python 3. Ini bukan untuk wxPython, tapi untuk tkinter.
sumber
sumber
Anda juga dapat memposisikan jendela lain sebelum menariknya sehingga Anda memposisikan pesan Anda
Harap Dicatat: Ini adalah jawaban Lewis Cowles hanya untuk Python 3ified, karena tkinter telah berubah sejak python 2. Jika Anda ingin kode Anda menjadi kata kunci yang dapat digabungkan, lakukan sesuatu seperti ini:
sumber
Bukan yang terbaik, ini kotak Pesan dasar saya hanya dengan menggunakan tkinter.
sumber
lihat modul python saya: pip install quickgui (Memerlukan wxPython, tetapi tidak memerlukan pengetahuan tentang wxPython) https://pypi.python.org/pypi/quickgui
Dapat membuat sejumlah masukan, (rasio, kotak centang, kotak masukan), mengaturnya secara otomatis pada satu gui.
sumber
Versi kotak pesan terbaru adalah modul prompt_box. Ini memiliki dua paket: peringatan dan pesan. Pesan memberi Anda kontrol yang lebih besar atas kotak, tetapi membutuhkan waktu lebih lama untuk mengetik.
Contoh Kode peringatan:
Contoh kode pesan:
sumber
modul ctype dengan threading
saya menggunakan kotak pesan tkinter tetapi itu akan merusak kode saya. saya tidak ingin mencari tahu mengapa jadi saya menggunakan modul ctypes sebagai gantinya.
sebagai contoh:
saya mendapat kode itu dari Arkelis
Saya suka bahwa itu tidak merusak kode jadi saya mengerjakannya dan menambahkan threading sehingga kode setelahnya akan berjalan.
contoh untuk kode saya
untuk gaya tombol dan nomor ikon:
sumber
Anda dapat menggunakan
pyautogui
ataupymsgbox
:Menggunakan
pymsgbox
sama dengan menggunakanpyautogui
:sumber