如何消除Raspberry Pi上tkinter全屏窗口的1像素白边?
解决Tkinter全屏窗口白边问题
要消除全屏Tkinter窗口的1像素白边,核心是去掉窗口和Canvas组件的默认边框、高亮效果,以下是修改后的代码及说明:
修改后的代码
import tkinter as tk _root = tk.Tk() _root.withdraw() def display(win): win.create_oval(60,60,210,210,fill="green") class GraphWin(tk.Canvas): def __init__(self, title="Graphics Window"): boss = tk.Toplevel(_root) # 全屏属性 + 移除窗口边框相关配置 boss.attributes('-fullscreen', True) boss.config(borderwidth=0, highlightthickness=0) # Canvas初始化时清除边框和高亮厚度 tk.Canvas.__init__(self, boss, background="black", borderwidth=0, highlightthickness=0) self.background = "black" self.pack(fill=tk.BOTH, expand=True) boss.lift() boss.update_idletasks() # 确保窗口样式配置生效 window = GraphWin() display(window) _root.mainloop()
关键修改点
- 给Toplevel窗口设置
borderwidth=0和highlightthickness=0:消除窗口本身的默认边框与聚焦高亮效果 - 给Canvas添加
borderwidth=0和highlightthickness=0参数:去掉Canvas组件自带的边框和选中高亮,避免出现白边 - 用
boss.update_idletasks()替代_root.update():更精准地触发窗口配置更新,确保所有样式生效
如果上述修改后仍有白边,可尝试添加boss.overrideredirect(True)(该属性会移除窗口标题栏和控制按钮,与-fullscreen兼容),进一步强制窗口无边框。
内容的提问来源于stack exchange,提问作者Joymaker
相关产品推荐
相关产品推荐

