ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

CustomTkinter:5 个要点快速打造现代 Python GUI 界面

CustomTkinter:5 个要点快速打造现代 Python GUI 界面

CustomTkinter:5 个要点快速打造现代 Python GUI 界面

【免费下载链接】CustomTkinterA modern and customizable python UI-library based on Tkinter项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter

CustomTkinter 是基于 Tkinter 的现代化 Python UI 库,提供全套可定制控件,颜色随明暗主题自动切换并支持高分辨率缩放,在 Windows、macOS、Linux 上呈现统一观感,适合快速构建数据工具、文件管理一类的桌面应用界面。

先看成品效果:一个窗口装下整套现代控件

不用先手写布局,直接跑仓库里的官方示例python examples/complex_example.py,就能得到一个可以直接当工具骨架的窗口:

窗口里全部是标准 CTk 控件:左侧是用CTkFrame搭的侧边栏,放着按钮和两个CTkOptionMenu(分别切换外观模式与 UI 缩放);主区域能看到CTkEntry、CTkTextbox、CTkTabview、单选按钮组、横竖两个CTkSlider与CTkProgressBar,以及一个塞了 100 个CTkSwitch的CTkScrollableFrame。布局方式依然是你熟悉的 grid/pack,只是把控件换成了 CTk 版本,观感就完全不同了。

观感从哪来:统一绘制、明暗色对与高分屏缩放

从源码结构看,它"好看"不是因为逐个控件重画,而是三件事被统一了:

  • 绘制引擎:所有控件都通过DrawEngine画在 canvas 上,圆角和过渡行为天然一致;
  • 主题配置:每个控件的颜色在 JSON 里写成[浅色, 深色]一对值,由主题文件统一定义;
  • 字体与缩放:字体按平台分别配置(macOS 用 SF Display,Windows/Linux 用 Roboto,库内自带 Roboto 字体文件),整窗通过set_widget_scaling/set_window_scaling自适应高分屏。

内置主题文件都在 customtkinter/assets/themes/ 下,包括 blue、dark-blue、green、gold;绘制逻辑位于 customtkinter/windows/widgets/core_rendering/。不求精通,知道这套分工,后面想定制时你就知道该翻哪里。

CustomTkinter 快速上手:一条命令安装,打开控件展厅

安装只需一条命令,库仍在积极开发中,建议定期用--upgrade保持更新:

pip install customtkinter

不想先写代码的话,库自带一个展厅,两行就能把所有控件和主题实时翻一遍:

import customtkinter as ctk ctk.run_showroom()

想自己写窗口,最小形态如下——创建CTk主窗口,把传统tkinter.Button换成CTkButton即可:

import customtkinter customtkinter.set_appearance_mode("System") customtkinter.set_default_color_theme("blue") app = customtkinter.CTk() app.geometry("400x240") button = customtkinter.CTkButton(app, text="CTkButton", command=lambda: print("button pressed")) button.place(relx=0.5, rely=0.5, anchor=customtkinter.CENTER) app.mainloop()

三个高频场景:自适应图标、可滚动列表与跟随系统主题

自适应图标。准备一对明暗风格的图标,交给CTkImage,之后主题切换时图标会自动跟着换。像下面这种导航栏就是标准做法:

home_image = customtkinter.CTkImage( light_image=Image.open("test_images/home_dark.png"), dark_image=Image.open("test_images/home_light.png"), size=(20, 20) ) nav_button = customtkinter.CTkButton(sidebar, text="Home", image=home_image, fg_color="transparent", anchor="w")

可滚动列表。设备清单、设置项这类长列表不用自己拼滚动条,CTkScrollableFrame自带滚动条,还可以继承它做成支持动态增删条目的小容器:

scroll_frame = customtkinter.CTkScrollableFrame(app, label_text="设备清单") scroll_frame.pack(fill="both", expand=True) for name in device_list: customtkinter.CTkCheckBox(scroll_frame, text=name).pack(anchor="w")

跟随系统主题。建窗之前调用set_appearance_mode("System"),应用就跟随系统的浅色/深色设置,运行时也可以随时切换——complex_example 侧边栏上的两个下拉框就是专门用来演示这一点的:

自定义主题配置:一份 JSON 换掉全应用配色

内置颜色不合口味时,不用改源码,照内置文件的结构写一份主题 JSON,把文件路径传给set_default_color_theme即可加载。以内置 blue.json 中 CTkButton 的部分为例:

{ "CTkButton": { "corner_radius": 6, "fg_color": ["#3B8ED0", "#1F6AA5"], "hover_color": ["#36719F", "#144870"] } }

数组形式的颜色分别对应浅色与深色取值;改一个键,全局对应控件一起变。只调个别的控件时,也可以直接对单个实例调configure(),两条路线互不冲突。

跑一遍python examples/complex_example.py感受全套控件的实际行为,然后git clone https://gitcode.com/gh_mirrors/cu/CustomTkinter把仓库拉到本地,照着 examples 目录里的样例搭你的第一个窗口。

【免费下载链接】CustomTkinterA modern and customizable python UI-library based on Tkinter项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表