ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CustomTkinter 综合项目实战:从 0 到 1 仿制完整 App 界面(侧边栏+标签页+滚动列表)

CustomTkinter 综合项目实战:从 0 到 1 仿制完整 App 界面(侧边栏+标签页+滚动列表) CustomTkinter 综合项目实战从 0 到 1 仿制完整 App 界面侧边栏标签页滚动列表【免费下载链接】CustomTkinterA modern and customizable python UI-library based on Tkinter项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinterCustomTkinter 是一款基于 Tkinter 的现代化 Python GUI 库提供全新的、可完全自定义的控件并自动适配深色/浅色模式与高 DPI 缩放。本实战教程带你从 0 到 1 仿制一个完整的 App 界面带图标的侧边栏导航、多标签页内容区、可滚动的长列表最终效果如下官方 complex_example.py 在 Windows 11 深色模式下的运行截图一、环境准备一条命令安装 CustomTkinterCustomTkinter 通过 pip 分发Python 3.7 均可使用30 秒完成安装pip3 install customtkinter想对照源码学习的话可以克隆本仓库查看完整实现git clone https://gitcode.com/gh_mirrors/cu/CustomTkinter 库内置 4 套主题文件全部位于 customtkinter/assets/themes/blue.json默认蓝、dark-blue.json、green.json、gold.jsonCHANGELOG.md 记录 6.0 版新增。二、第一步跑通最小窗口验证环境就绪写完整界面之前先用一个按钮确认环境正常——所有 CustomTkinter 控件的用法与标准 Tkinter 几乎一致import customtkinter as ctk ctk.set_appearance_mode(dark) # System / dark / light ctk.set_default_color_theme(blue) # 主题blue / green / dark-blue app ctk.CTk() app.geometry(400x240) button ctk.CTkButton(app, textCTkButton) button.place(relx0.5, rely0.5, anchorctk.CENTER) app.mainloop()三、第二步打造侧边栏导航CTkFrame grid 布局侧边栏的本质就是一个固定宽度、直角边框的CTkFrame配合grid布局把控件从上到下排好。核心就三步corner_radius0让框架四边直角贴合窗口边缘stickynsewgrid_rowconfigure让侧边栏随窗口拉伸用透明按钮fg_colortransparent做出选中高亮的导航效果。# 左侧导航栏固定宽 140直角边框 sidebar ctk.CTkFrame(app, width140, corner_radius0) sidebar.grid(row0, column0, rowspan4, stickynsew) sidebar.grid_rowconfigure(4, weight1) # 底部留白自动撑满 logo ctk.CTkLabel(sidebar, textMyApp, fontctk.CTkFont(size20, weightbold)) logo.grid(row0, column0, padx20, pady(20, 10)) home_btn ctk.CTkButton(sidebar, textHome, fg_colortransparent, anchorw) home_btn.grid(row1, column0, stickyew)完整实现含 Logo 图片与浅色/深色双套图标见 examples/image_example.py运行效果四、第三步用 CTkTabview 组织标签页标签页控件CTkTabview源码 customtkinter/windows/widgets/ctk_tabview.py内部基于分段按钮实现每个标签页都是一个独立的 grid 容器可以随意嵌入其他控件tabview ctk.CTkTabview(app, width250) tabview.grid(row0, column1, padx(20, 0), pady(20, 0), stickynsew) tabview.add(Dashboard) tabview.add(Settings) # 每个标签页单独配置 grid 布局 tabview.tab(Dashboard).grid_columnconfigure(0, weight1)⚠️ 注意tabview.add()的参数是标签名后续要用tabview.tab(标签名)访问页内空间——这一细节是 examples/complex_example.py#L57-L63 中最容易踩的坑。五、第四步CTkScrollableFrame 实现可滚动列表内容超过窗口高度时CTkScrollableFrame源码 customtkinter/windows/widgets/ctk_scrollable_frame.py是标准解法。6.0 版已修复鼠标悬停时滚轮滚动的问题体验顺滑scroll_frame ctk.CTkScrollableFrame(app, label_textNotifications) scroll_frame.grid(row1, column1, padx(20, 0), pady(20, 0), stickynsew) scroll_frame.grid_columnconfigure(0, weight1) for i in range(100): ctk.CTkSwitch(scroll_frame, textfItem {i}) \ .grid(rowi, column0, padx10, pady(0, 20)) 进阶技巧把CTkScrollableFrame当基类继承封装add_item()/remove_item()/get_checked_items()方法就能得到可动态增删的自定义列表组件完整示例见 examples/scrollable_frame_example.py。六、主题与外观模式一键切换深色 / 浅色CustomTkinter 的最大卖点之一所有控件颜色自动跟随系统外观。两行 API 即可控制ctk.set_appearance_mode(System) # 跟随系统也可设 dark / light ctk.set_default_color_theme(blue)在界面上放一个CTkOptionMenu下拉菜单就能让用户实时切换主题写法见 examples/complex_example.py#L36-L43。切换后的浅色模式效果想换配色风格只需修改主题 JSON 中的色值数组第一个值是浅色模式色第二个是深色模式色参考 customtkinter/assets/themes/dark-blue.json。七、完整示例与扩展练习直接运行官方综合示例即可看到本文全部成果合体python examples/complex_example.py想一次性浏览全部控件官方 6.0 版提供了内置展示应用一条命令启动import customtkinter as ctk ctk.run_showroom()课后练习清单难度递增练习用到的核心控件参考文件给侧边栏按钮加图标图片CTkImage、compoundleftexamples/image_example.py侧边栏按钮点击后切换右侧标签页tabview.set()examples/complex_example.py动态增删列表项并统计勾选数继承CTkScrollableFrameexamples/scrollable_frame_example.py弹窗输入一个数字CTkInputDialogcustomtkinter/windows/ctk_input_dialog.py小结本教程的布局公式可以复用任何桌面应用——CTkFrame固定侧边栏 grid划分区域 CTkTabview管理页面 CTkScrollableFrame承载长列表。掌握这四个控件的组合你就能用 Python 快速仿制任何现代 App 界面 【免费下载链接】CustomTkinterA modern and customizable python UI-library based on Tkinter项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表