如何获取CTkLabel所属CTkFrame的名称?
解决CTkLabel获取所属CTkFrame的问题
获取所属CTkFrame实例
CTk组件的master是实例属性,而非可通过cget()获取的配置参数,所以直接访问组件的master属性就能拿到所属的CTkFrame对象,无需调用cget('master')。示例代码:
import customtkinter as ctk root = ctk.CTk() # 创建目标框架 loginPage = ctk.CTkFrame(root) loginPage.pack() # 创建隶属于loginPage的CTkLabel signUpTrans = ctk.CTkLabel(loginPage, text="Sign Up") signUpTrans.pack() # 获取所属的CTkFrame实例 parent_frame = signUpTrans.master print(parent_frame) # 输出CTkFrame对象实例
获取框架的自定义名称(如loginPage)
Python对象本身不会保存它被赋值的变量名,需要通过以下两种方式手动关联:
- 方法一:创建框架时设置
name参数,通过winfo_name()获取
# 创建框架时指定name属性 loginPage = ctk.CTkFrame(root, name="loginPage") loginPage.pack() # 获取框架名称 frame_name = signUpTrans.master.winfo_name() print(frame_name) # 输出"loginPage"
- 方法二:维护实例与名称的映射字典
# 建立框架实例到名称的映射 frame_name_map = {} loginPage = ctk.CTkFrame(root) frame_name_map[loginPage] = "loginPage" loginPage.pack() # 通过映射获取名称 frame_name = frame_name_map.get(signUpTrans.master) print(frame_name) # 输出"loginPage"
内容的提问来源于stack exchange,提问作者Casual_Coder
相关产品推荐
相关产品推荐

