如何用Python/PySimpleGUI实现自定义标题栏的窗口最小化
PySimpleGUI自定义标题栏:修复最小化功能问题
要实现隐藏原生标题栏+自定义窗口控制按钮,核心是用对PySimpleGUI的窗口状态控制方法,你当前的错误是把最小化按钮的事件绑定了关闭窗口的逻辑,改成调用window.minimize()即可解决。
以下是完整可运行的示例代码:
import PySimpleGUI as sg # 自定义标题栏布局:最小化、最大化、关闭按钮 title_bar_layout = [ sg.Button('🗕', key='-MINIMIZE-', border_width=0, button_color=('white', '#2c3e50')), sg.Button('🗖', key='-MAXIMIZE-', border_width=0, button_color=('white', '#2c3e50')), sg.Button('🗙', key='-CLOSE-', border_width=0, button_color=('white', '#e74c3c')), ] # 主窗口布局,把自定义标题栏放在最顶部 layout = [ title_bar_layout, [sg.Text('自定义标题栏测试窗口', pad=(20, 20))], [sg.Button('普通按钮')] ] # 初始化窗口,隐藏原生标题栏 window = sg.Window('自定义标题栏', layout, no_titlebar=True, grab_anywhere=True, size=(400, 300)) while True: event, values = window.read() if event == sg.WIN_CLOSED or event == '-CLOSE-': break elif event == '-MINIMIZE-': # 调用最小化方法,而非关闭窗口 window.minimize() elif event == '-MAXIMIZE-': # 切换窗口最大化/还原状态 window.toggle_maximize() window.close()
关键说明:
no_titlebar=True:隐藏系统原生标题栏grab_anywhere=True:允许拖动自定义标题栏移动窗口window.minimize():触发窗口最小化,这是你之前缺失的正确方法window.toggle_maximize():一键切换窗口的最大化/还原状态,比单独调用maximize()更实用
内容的提问来源于stack exchange,提问作者PyiPath2022
相关产品推荐
相关产品推荐

