CustomTkinter基于 Tkinter 的现代化界面库零配置做出深色主题桌面应用【免费下载链接】CustomTkinterA modern and customizable python UI-library based on Tkinter项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinterCustomTkinter 是一个基于 Tkinter 的现代化 Python 界面库它把原生 Tkinter 默认的过时外观升级为带圆角、阴影、深色模式的现代控件且不需要任何额外渲染依赖。你写的还是熟悉的 Tkinter 代码但跑出来的界面是 2026 年的样子。它适合需要做内部工具、数据面板、小管理端又不想引入重型跨平台框架的开发者。 选型判断CustomTkinter 适合你的项目吗项目是小型到中型桌面工具界面以按钮、表单、标签页、列表为主——它内置的控件库基本够用选它没错。需要跨平台且在意观感一致——macOS、Windows、Linux 三端默认视觉高度统一还自带缩放跟踪高分屏不用手动处理。你需要嵌入网页、自绘大量图形或复杂 3D 效果——Tkinter 体系不适合换别的方案。️ 两个省事的机制双主题图片与跨平台字体图片跟着明暗主题自动切换传统做法要自己写当前是深色就换一张图的逻辑CustomTkinter 省掉了这一步。CTkImage同时接收明、暗两张图运行时主题一变标签和按钮上的图片自动切换。from PIL import Image import customtkinter dark Image.open(test_images/home_dark.png) light Image.open(test_images/home_light.png) home_image customtkinter.CTkImage( light_imagelight, dark_imagedark, size(20, 20) ) nav_button customtkinter.CTkButton( master, text首页, imagehome_image, anchorw, fg_colortransparent, hover_color(gray70, gray30) )上面代码里light_image和dark_image分别对应两种外观模式下的图标之后无论主题如何切换你都不用碰nav_button。一份字体配置三端表现一致Tkinter 在不同系统上会用各自的原生字体同样的size出来的粗细和宽度都可能不一样。CustomTkinter 内置了字体管理器并随包附带 Roboto 字体文件见customtkinter/assets/fonts/你只需要指定 family、size、weight 三项其余交给它。title_font customtkinter.CTkFont(size20, weightbold) logo customtkinter.CTkLabel( master, textCustomTkinter, fonttitle_font )这样标题在 macOS 和 Windows 上的观感几乎一致不用为每个平台单独调字号。 完整小案例15 行代码搭一个侧边导航下面的ModernApp类搭了一个带侧边栏的页面左侧三个带图标的导航按钮右侧留出内容区底部还有一个明暗模式切换按钮。import customtkinter from PIL import Image class ModernApp(customtkinter.CTk): def __init__(self): super().__init__() self.title(ModernApp) self.geometry(800x500) sidebar customtkinter.CTkFrame(self, width180) sidebar.pack(sideleft, filly) icon customtkinter.CTkImage( light_imageImage.open(test_images/home_light.png), dark_imageImage.open(test_images/home_dark.png), size(20, 20) ) def switch(): m Dark if customtkinter.get_appearance_mode() Light else Light customtkinter.set_appearance_mode(m) for i, label in enumerate([仪表盘, 用户, 设置]): b customtkinter.CTkButton( sidebar, textlabel, imageicon, anchorw, fontcustomtkinter.CTkFont(size14)) b.pack(fillx, padx12, pady6, padx10 if i else 12) customtkinter.CTkButton( sidebar, text切换外观, commandswitch).pack(pady8) customtkinter.CTkFrame(self).pack(sideleft, fillboth, expandTrue) app ModernApp() app.mainloop()CTkFrame只设了width且按高度方向填充就形成了一个固定宽度的侧边栏switch函数让界面里的所有控件随主题一起换色。运行效果如下 外观控制配置方法改一处全局生效CustomTkinter 的主题本质是一份 JSON 文件每个控件类别占一个键里面是它的颜色、圆角、边框等属性。以 blue.json 为例CTkButton一节里fg_color就是按钮底色hover_color是鼠标悬停时的颜色。{ CTkButton: { corner_radius: 6, fg_color: [#3B8ED0, #1F6AA5], hover_color: [#36719F, #144870] } }注意到颜色值都是[明色, 暗色]的两元组——第一份用于浅色模式第二份用于深色模式这就是改一处、全局生效的关键配置位置影响范围主题 JSON 中某个控件的键该类控件的所有实例set_appearance_mode()整个应用当前明暗模式set_default_color_theme()所有控件的颜色取值customtkinter.set_appearance_mode(Dark) customtkinter.set_default_color_theme(blue)第一行决定当前是浅色还是深色也可传System跟随系统第二行决定颜色取自哪套主题文件。两行都作用全局之后创建的所有控件自动继承不需要逐个设置。 安装与最小模板pip 一条命令跑起来先装依赖再写一个最小窗口验证环境pip install customtkinterimport customtkinter app customtkinter.CTk() app.title(我的应用) app.geometry(400x300) button customtkinter.CTkButton(app, text开始使用) button.pack(pady20) app.mainloop()第一条命令装好库之后第二段代码就能打开一个带现代按钮的窗口跑通即代表环境就绪。想进一步看控件长什么样克隆仓库后直接运行 examples 目录下的示例即可。git clone https://gitcode.com/gh_mirrors/cu/CustomTkinter【免费下载链接】CustomTkinterA modern and customizable python UI-library based on Tkinter项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?