如何在PySimpleGUI开发的GUI程序中通过按钮切换控制台显示状态
PySimpleGUI 控制台显隐切换实现方法
前置要求
- 打包exe时不要勾选auto-py-to-exe的「关闭控制台」选项,否则控制台进程会被完全禁用,无法完成显隐切换
实现逻辑
直接调用Windows系统内置的kernel32和user32接口,获取当前程序绑定的控制台句柄,调用显示/隐藏接口切换状态即可,全程不需要重启程序。
完整可运行代码
import PySimpleGUI as sg import ctypes # 加载系统dll kernel32 = ctypes.WinDLL('kernel32') user32 = ctypes.WinDLL('user32') # 获取当前程序对应的控制台窗口句柄,比获取前台窗口更稳定 console_hwnd = kernel32.GetConsoleWindow() # 记录控制台当前显示状态,默认启动时为显示 is_console_show = True # 界面布局,添加切换按钮,点击即可切换控制台显隐状态,和你提供的参考按钮功能一致 layout = [ [sg.Button('显示/隐藏控制台', key='-TOGGLE_BTN-')] ] window = sg.Window('控制台切换演示', layout) while True: event, _ = window.read() if event == sg.WINDOW_CLOSED: break if event == '-TOGGLE_BTN-': is_console_show = not is_console_show # SW_HIDE = 0, SW_SHOW = 5 user32.ShowWindow(console_hwnd, 5 if is_console_show else 0) window.close()
补充说明
- 该方案仅适配Windows系统,如果你需要跨Linux、macOS使用,需要单独适配对应系统的终端控制接口
- 上述代码没有额外第三方依赖(除了你已经在用的PySimpleGUI),打包后可以直接运行
内容的提问来源于stack exchange,提问作者Eskimo868
相关产品推荐
相关产品推荐

