如何检测窗口Fullscreen属性状态并实现全屏与窗口模式切换?
问题分析与解决方案
你的代码出现“点击全屏切换按钮后,窗口短暂切换到窗口模式又立刻回到全屏”的问题,核心问题出在Ifullscreen函数的逻辑错误:你直接判断函数对象Fulwin(函数对象在Python中永远为真),且没有实际调用切换函数;另外最小化按钮的实现也不符合预期,当前只是关闭全屏,并非真正将窗口最小化到任务栏。
修正后的代码
import tkinter.messagebox from tkinter import * import customtkinter from PIL import Image, ImageTk import sys customtkinter.set_appearance_mode("dark") # 模式: System(默认), Light, Dark customtkinter.set_default_color_theme("dark-blue") # 主题: blue, dark-blue, green window = customtkinter.CTk() window.title("To-Do List") # window.overrideredirect(1) # 切换全屏/窗口模式 def toggle_fullscreen(): # 获取当前全屏状态,取反后设置 current_state = window.attributes('-fullscreen') window.attributes('-fullscreen', not current_state) # 最小化窗口到任务栏 def minimize_window(): window.iconify() # 退出程序 def exit_app(): sys.exit() # 全屏切换按钮(原Maximize按钮) maximize_image = ImageTk.PhotoImage(Image.open("GUI/Maximize.png")) maximize_button = customtkinter.CTkButton( master=window, image=maximize_image, text="", command=toggle_fullscreen, width=30, height=30, fg_color='#1a1a1a', hover_color='#1a1a1a' ) maximize_button.place(x=1450, y=10) # 最小化按钮 minimize_image = ImageTk.PhotoImage(Image.open("GUI/minimize.png")) minimize_button = customtkinter.CTkButton( master=window, image=minimize_image, text="", command=minimize_window, width=30, height=30, fg_color='#1a1a1a', hover_color='#1a1a1a' ) minimize_button.place(x=1400, y=10) # 退出按钮 exit_image = ImageTk.PhotoImage(Image.open("GUI/exit.png")) exit_button = customtkinter.CTkButton( master=window, image=exit_image, text="", command=exit_app, width=30, height=30, fg_color='#1a1a1a', hover_color='#1a1a1a' ) exit_button.place(x=1500, y=10) window.mainloop()
关键修改说明
- 全屏状态检测与切换:通过
window.attributes('-fullscreen')获取当前窗口的全屏状态(返回布尔值True/False),然后取反设置新状态,实现一键切换。 - 最小化功能修正:使用
window.iconify()替代关闭全屏,真正将窗口最小化到系统任务栏。 - 简化函数逻辑:去掉冗余的
Fulwin和Nonwin函数,直接在切换函数中完成状态判断与设置,避免逻辑混乱。 - 命名规范优化:函数名改为更直观的命名,如
toggle_fullscreen、minimize_window,提高代码可读性。
内容的提问来源于stack exchange,提问作者Suchi
相关产品推荐
相关产品推荐

