主框架与侧边栏间出现黑线,求移除方法(附CustomTkinter代码)
移除CustomTkinter侧边栏与主框架间的黑线
运行你提供的CustomTkinter代码时,侧边栏与主内容框架之间出现的黑线,本质是主窗口默认背景色从两个框架的间隙中透出来导致的。CustomTkinter默认主题下主窗口背景为深色,所以间隙显示为黑线。
解决方法
给主窗口设置与相邻框架一致的背景色,消除间隙的视觉差异:
- 在创建
app后,添加一行代码设置主窗口的前景色(背景色)为与主框架或侧边栏边框相同的颜色:app.configure(fg_color="#A9CCE3")
修改后的完整代码
import tkinter as tk import customtkinter as ctk import time # 应用初始化 app = ctk.CTk() app.title("organize") app.geometry("900x600") # 添加此行:设置主窗口背景与主框架一致,消除黑线 app.configure(fg_color="#A9CCE3") # 侧边栏框架 sidebar = ctk.CTkFrame(master=app, width=200, corner_radius=0, fg_color="#FAFAF5", border_width=10, border_color="#A9CCE3") sidebar.pack(side='left', fill='y') # 主内容框架 main_content = ctk.CTkFrame(master=app, fg_color="#A9CCE3") main_content.pack(side='right', fill='both', expand=True) # 按钮点击事件 def menu_button_click(button_name): print(f"{button_name} clicked!") # 创建侧边栏按钮 buttons_names = ["Pomodoro", "To-do list", "Stopwatch", "Analisis"] for name in buttons_names: button = ctk.CTkButton(master=sidebar, text=name, command=lambda n=name: menu_button_click(n), corner_radius=8, fg_color="#75A5D0", hover_color="#5084B9", height=50) button.pack(pady=20, padx=20, fill='x') app.mainloop()
其他可选方案
如果不想修改主窗口背景,也可以用grid布局替代pack,通过严格控制列宽消除间隙:
- 将侧边栏和主框架的
pack替换为grid:sidebar.grid(row=0, column=0, sticky="ns") main_content.grid(row=0, column=1, sticky="nsew") - 设置主窗口的网格列权重,让主框架自动填充剩余空间:
app.grid_columnconfigure(1, weight=1) app.grid_rowconfigure(0, weight=1)
内容的提问来源于stack exchange,提问作者Faiz Hidayat
相关产品推荐
相关产品推荐

