CustomTkinter 完整指南:给 Tkinter 换上现代 Python GUI 界面
【免费下载链接】CustomTkinterA modern and customizable python UI-library based on Tkinter项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter
CustomTkinter 是一个构建在 Tkinter 之上的 Python GUI 库。它保留了原生 Tkinter 的写法,却把按钮、输入框、标签页这些控件换成了带圆角、带渐变、能换肤的现代外观,同时支持 light、dark、system 三种外观模式,并在 Windows、macOS、Linux 上给出一致的界面。如果你一直觉得标准 Tkinter 做出来的窗口过时,这套库就是为了解决这个问题。
老 Tkinter 长什么样,问题出在哪
默认 Tkinter 的控件是纯色矩形:按钮是灰底硬边框,滑块和滚动条是系统原生样式,字体也不会随显示器缩放。做出来的工具能跑,但放在今天的应用里显得廉价,深色模式、高分屏这些需求都要自己从零补。
CustomTkinter 的做法不是重写 Tkinter,而是在它上面再画一层。每个控件内部用画布自绘,圆角、边框、悬停高亮、点击动画都自己处理,所以你还能像用tkinter.Button一样用CTkButton,老代码里混着原生控件也不冲突。
克隆仓库并用 pip 装好 CustomTkinter
源码放在仓库里,拉下来看控件实现很方便。日常开发直接从包管理装即可,两者并行:
git clone https://gitcode.com/gh_mirrors/cu/CustomTkinter pip3 install customtkinter版本还在活跃更新,旧环境升级时用pip3 install customtkinter --upgrade。它要求 Python 3.7 及以上。仓库里的pyproject.toml标着当前版本 6.0.0,装完import customtkinter能正常导入就说明环境没问题。
三分钟跑通一个最小窗口
一个窗口加一个按钮,就能验证控件外观和居中布局:
import customtkinter app = customtkinter.CTk() app.geometry("400x240") button = customtkinter.CTkButton(app, text="点击我") button.place(relx=0.5, rely=0.5, anchor=customtkinter.CENTER) app.mainloop()跑起来你会看到圆角按钮、悬停变亮、按下有位移。geometry控制窗口尺寸,place配合relx/rely做相对定位,这套和原生 Tkinter 完全一致,不用重新学布局。
换肤:三种外观模式与四套主题
外观模式由set_appearance_mode控制,取值是 "light"、"dark" 和 "system"。system 会跟随操作系统,Windows 10/11 切到深色,界面同步变,不用改一行代码。主题由set_default_color_theme指定,默认是 blue,仓库里还备了 dark-blue、green、gold 四个主题文件,放在customtkinter/assets/themes/下,都是 JSON,想换配色照着写一份就行。
控件颜色支持传一个二元组(浅色模式值,深色模式值),这样同一套代码在两种外观下各取所需。
长列表与图片展示:滚动框架和 CTkImage
内容超过一屏时用CTkScrollableFrame,它内置滚动条,orientation能设成 vertical 或 horizontal,往里面继续放CTkCheckBox、CTkRadioButton都行。examples/scrollable_frame_example.py里有滚动复选框列表和单选按钮列表两个子类,直接抄结构最快。
图片这块,CTkImage接收 PIL 的Image对象,支持同时传light_image和dark_image,切外观时图标自动换图,适合做导航栏那种明暗两套的图标。按钮也能带图,把PhotoImage传给CTkButton的image参数,再配compound调文字和图片的相对位置。examples/image_example.py演示了带图标按钮加图片预览区,整片区域用蓝色渐变打底。
高分屏不糊:DPI 自适应缩放
高分屏上普通 Tkinter 控件会显得又小又虚。CustomTkinter 在启动时激活系统的高 DPI 感知,按每个窗口的实际缩放系数重新计算尺寸和字体。它分两层:set_widget_scaling放大控件本身,set_window_scaling放大窗口,二者叠加后文字、边距、圆角一起变清晰。这套逻辑在customtkinter/windows/widgets/scaling/里,ScalingTracker负责记录每个窗口的 DPI 系数。想关掉自动 DPI 感知也能设标志位,但一般不用碰。
三大平台表现,适合做哪几类应用
界面在 Windows、macOS、Linux 上保持同一套控件和配色,不用为每个系统写分支。macOS 想要深色窗口标题栏需要 Python 3.10 以上或带新 Tcl/Tk 的解释器。
从场景看,它适合工具型桌面软件:文件管理、笔记、参数配置、数据录入查询、教学演示这类以表单和列表为主的应用。控件清单里CTkOptionMenu、CTkComboBox、CTkSegmentedButton、CTkTabview、CTkTextbox、CTkProgressBar都齐了,常见交互不用自己拼。
上手指引:从 examples 目录读起
别急着看文档,先跑examples/下的五个脚本:simple_example.py是最小表单,complex_example.py是四宫格多控件布局,image_example.py和scrollable_frame_example.py各解决一个具体问题,example_background_image.py演示背景图。跑通后再调set_appearance_mode和set_default_color_theme两个函数,就能覆盖大部分界面需求。
下一步建议:复制simple_example.py,把里面的CTkEntry换成你自己的字段,接一个command回调读数据——一个能收集输入的现代化表单就成型了。仓库是只读的,改示例请在自己目录里另存副本再动手。
【免费下载链接】CustomTkinterA modern and customizable python UI-library based on Tkinter项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考