Как переключить консоль с помощью кнопки в программе с графическим интерфейсом

#python #python-3.x #console #pysimplegui

Вопрос:

Когда я запускаю свою программу (файл.exe), консоль автоматически включается. Я не хочу избавляться от этого, но я хочу иметь возможность скрывать это. Я знаю, что могу полностью избавиться от консоли, закрывая файл .py в .exe с помощью модуля auto-py-to-exe.

Есть ли способ включать и выключать консоль с помощью кнопки, не закрывая программу или что-то в этом роде? Я использую библиотеку PySimpleGui для графического интерфейса, если это что-то изменит.

Кнопка:

Кнопка переключения консоли

Комментарии:

1. вы хотите включить/выключить новую консоль? Или тот, который запускается, когда вы запускаете a .py ?

2. Я мог бы указать, что я сжал программу в exe, и консоль автоматически включается.

3. и вы хотите переключить его? или просто избавиться от него

4. Почему в вашей графической программе вообще есть консоль? Возможно, вы неправильно преобразовали его в файл .exe.

5. Я мог бы также указать это, да, я хочу переключить его. Я знаю, что вы можете полностью отключить консоль во время преобразования .py в .exe

Ответ №1:

Попробуйте использовать библиотеку pywin32 для скрытия/отображения консоли, и она работает только для WINDOWS.

 import win32gui, win32con
import PySimpleGUI as sg

console = win32gui.GetForegroundWindow()

sg.theme("DarkBlue3")
sg.set_options(font=("Courier New", 12))

layout = [[sg.Button( "Console ON/OFF", key="-CONSOLE-")]]
window = sg.Window('Title', layout, finalize=True)

view_console = True
while True:

    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break
    elif event == "-CONSOLE-":
        view_console = not view_console
        option = win32con.SW_SHOW if view_console else win32con.SW_HIDE
        win32gui.ShowWindow(console, option)

window.close()
 

Комментарии:

1. Спасибо! Хотя я не думаю, что со всеми моими библиотеками моя программа будет работать в разных операционных системах, было бы неплохо найти способ сделать это в каждой операционной системе.

2. Ничего не знаю о Linux и macOS, вот и все.