You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tkinter设置iconbitmap后窗口出现异常灰色线条求助

Windows 11下Tkinter设置窗口图标后出现灰色线条的问题及解决

问题描述

在Windows 11系统、Python 3.11.1环境中,使用Tkinter编写GUI程序时,调用tkWindow.iconbitmap("icon.ico")设置窗口图标后,窗口右上角会出现一条异常的灰色线条;注释该图标设置代码后,线条消失。

可复现代码

import tkinter as tk

# 窗口初始化
tkWindow: tk.Tk = tk.Tk()
tkWindow.resizable(False, False)
tkWindow.iconbitmap("icon.ico")

# 欢迎文本区域
text: str = f"Wedfghhhhhhhhjkllllll hojjjjjjjjj hjjjjjjjjj V1."

label_welcome: tk.Text = tk.Text(
    tkWindow,
    height=1,
    width=len(text),
    background='SystemButtonFace',
    borderwidth=0
)
label_welcome.insert("current", text)
label_welcome.grid(row=0, column=1, columnspan=2, pady=15)

tkWindow.mainloop()

现象对比

  • 设置图标后:窗口右上角显示一条灰色线条
  • 移除图标设置代码后:灰色线条消失

解决方法

该问题属于Tkinter与Windows 11的兼容性问题,可通过以下几种方式解决:

1. 改用wm_iconphoto设置图标

替换原有的iconbitmap调用,使用Pillow库将图标转为PhotoImage后设置:

import tkinter as tk
from PIL import Image, ImageTk

# 窗口初始化
tkWindow: tk.Tk = tk.Tk()
tkWindow.resizable(False, False)

# 用wm_iconphoto替代iconbitmap
icon = Image.open("icon.ico")
photo = ImageTk.PhotoImage(icon)
tkWindow.wm_iconphoto(True, photo)

# 后续代码不变
text: str = f"Wedfghhhhhhhhjkllllll hojjjjjjjjj hjjjjjjjjj V1."

label_welcome: tk.Text = tk.Text(
    tkWindow,
    height=1,
    width=len(text),
    background='SystemButtonFace',
    borderwidth=0
)
label_welcome.insert("current", text)
label_welcome.grid(row=0, column=1, columnspan=2, pady=15)

tkWindow.mainloop()

执行前需安装Pillow:pip install pillow

2. 修复图标文件格式

确保图标文件包含Windows标准尺寸(如16x16、32x32像素),部分非标准尺寸的图标会导致Tkinter渲染窗口边框异常。

3. 开启DPI适配

在代码开头添加高DPI适配代码,解决Windows 11下的界面渲染问题:

import ctypes
ctypes.windll.shcore.SetProcessDpiAwareness(1)

import tkinter as tk
# 后续代码不变

内容的提问来源于stack exchange,提问作者FluidMechanics Potential Flows

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 18:21:32