Cara untuk menyembunyikan jendela konsol python?

Saya menulis IRC bot Python.

Saya ingin membuat stand-alone biner untuk Linux dan Windows itu. Dan terutama saya berharap bahwa ketika bot memulai, jendela konsol yang harus menyembunyikan dan pengguna tidak harus dapat melihat jendela.

Apa yang dapat saya lakukan untuk itu?

Mengomentari pertanyaan (1)

Hanya menyimpannya dengan .pyw ekstensi. Hal ini akan mencegah jendela konsol dari pembukaan.

Pada sistem Windows, tidak ada gagasan tentang sebuah "eksekusi mode". Python installer secara otomatis associates .py file dengan python.exe sehingga double-klik pada file Python yang akan menjalankannya sebagai sebuah naskah. Ekstensi juga dapat .pyw, dalam kasus itu, jendela konsol yang biasanya muncul adalah ditekan.

Penjelasan di bawah bagian 2.2.2

Komentar (2)

Di linux, jalankan saja, tidak ada masalah. Di Windows, anda ingin menggunakan pythonw eksekusi.

Update

Oke, jika saya mengerti pertanyaan di komentar, anda're bertanya bagaimana membuat perintah jendela di mana anda've mulai bot dari baris perintah pergi setelah itu?

  • UNIX (Linux)

$ nohup mypythonprog &

  • Windows

C:/> mulai pythonw mypythonprog

Saya pikir ** yang's benar. Dalam kasus apapun, sekarang anda dapat menutup terminal.

Komentar (8)

Pada Sistem Unix (termasuk Linux, macOS, dan BSD)

Gunakan nohup mypythonprog &, dan anda dapat menutup jendela terminal tanpa mengganggu proses. Anda juga dapat menjalankan keluar jika anda berjalan di dalam awan dan don't ingin meninggalkan gantung shell proses.

Pada Sistem Windows

Simpan program dengan .pyw ekstensi dan sekarang akan terbuka pythonw.exe. Tidak ada shell jendela.

Misalnya, jika anda memiliki foo.py, anda perlu untuk mengubah itu untuk foo.pyw.

Komentar (0)

Jika semua yang anda ingin lakukan adalah menjalankan Script Python di windows komputer yang memiliki Interpreter Python terinstal, mengubah ekstensi yang disimpan script dari '.py' untuk '.pyw' harus melakukan trik.

Tapi jika anda're menggunakan py2exe untuk mengkonversi naskah anda menjadi sebuah aplikasi mandiri yang akan berjalan pada mesin windows, anda akan perlu untuk membuat perubahan berikut untuk anda 'setup.py' file.

Berikut adalah contoh sederhana python-GUI dibuat dengan menggunakan Tkinter:

from distutils.core import setup
import py2exe
setup (console = ['tkinter_example.pyw'],
       options = { 'py2exe' : {'packages':['Tkinter']}})

Perubahan "console" pada kode di atas ke "windows"..

from distutils.core import setup
import py2exe
setup (windows = ['tkinter_example.pyw'],
       options = { 'py2exe' : {'packages':['Tkinter']}})

Ini hanya akan membuka Tkinter dihasilkan GUI dan tidak ada jendela konsol.

Komentar (3)

Ini akan menyembunyikan konsol anda. Menerapkan garis dalam kode anda pertama mulai bersembunyi di konsol anda pada awalnya.

import win32gui, win32con

The_program_to_hide = win32gui.GetForegroundWindow()
win32gui.ShowWindow(The_program_to_hide , win32con.SW_HIDE)
Komentar (6)

Beberapa info tambahan. untuk situasi yang'll perlu win32gui solusi diposting oleh Mohsen Haddadi di awal thread ini:

Sebagai python 361, win32gui & win32con bukan bagian dari python std perpustakaan. Untuk menggunakannya, pywin32 paket akan perlu diinstal; sekarang mungkin melalui pip.

Lebih lanjut latar belakang info tentang pywin32 paket di: https://stackoverflow.com/questions/6624672/how-to-use-the-win32gui-module-with-python.

Juga, untuk menerapkan kebijaksanaan sambil menutup jendela sehingga secara tidak sengaja menutup jendela di latar depan, resolusi bisa diperpanjang sepanjang baris berikut:

try     :

    import win32gui, win32con;

    frgrnd_wndw = win32gui.GetForegroundWindow();
    wndw_title  = win32gui.GetWindowText(frgrnd_wndw);
    if wndw_title.endswith("python.exe"):
        win32gui.ShowWindow(frgrnd_wndw, win32con.SW_HIDE);
    #endif
except  :
    pass
Komentar (4)