You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CustomTkinter框架类初始化报错:意外关键字参数'master'

问题解决:init() got an unexpected keyword argument 'master'

问题原因

你自定义的inputs类继承自ctk.CTkFrame,但它的__init__方法既没有接收master参数,也没有将父容器参数传递给父类的构造函数。当你在主文件中传入master=self.frame_right创建实例时,类的构造函数无法识别这个参数,因此抛出错误。

修复方案

修改inputs类的构造函数,添加master参数并传递给父类:

import customtkinter as ctk

class inputs(ctk.CTkFrame):    
    def __init__(self, master=None):  # 添加master参数,设置默认值None
        super().__init__(master=master)  # 将master传递给父类CTkFrame的构造函数
    
        self.label_1 = ctk.CTkLabel(self, text="Incident Wave Inputs",
                                text_font=("Roboto Medium", -24,))
        self.label_1.grid(row=1, column=0, columnspan=2, sticky='W', pady=10, padx=10)
    
        self.label_2 = ctk.CTkLabel(self, text="Wave Height (H) = ",
                                text_font=("Roboto Medium", -16))
        self.label_2.grid(row=2, column=0, sticky='W', pady=10, padx=10)
    
        self.label_3 = ctk.CTkLabel(self, text="Water Depth (d) = ",
                                text_font=("Roboto Medium", -16))
        self.label_3.grid(row=3, column=0, sticky='W', pady=10, padx=10)
    
        self.label_4 = ctk.CTkLabel(self, text="Wave Period (T) = ",
                                text_font=("Roboto Medium", -16))
        self.label_4.grid(row=4, column=0, sticky='W', pady=10, padx=10)
    
        self.label_5 = ctk.CTkLabel(self, text="Wave Angle (α) = ",
                                text_font=("Roboto Medium", -16))
        self.label_5.grid(row=2, column=2, sticky='E', pady=10, padx=10)
    
        self.label_6 = ctk.CTkLabel(self, text="Bed Slope (s) = ",
                                text_font=("Roboto Medium", -16))
        self.label_6.grid(row=3, column=2, sticky='E', pady=10, padx=10)
    
        self.label_7 = ctk.CTkLabel(self, text="Depth of Interest (z) = ",
                                text_font=("Roboto Medium", -16))
        self.label_7.grid(row=4, column=2, sticky='E', pady=10, padx=10)
    
        self.entry2 = ctk.CTkEntry(self, placeholder_text="meter", width=120, 
                               height=25, border_width=2, corner_radius=10)
        self.entry2.grid(row=2, column=1, sticky='W', pady=10, padx=10)
    
        self.entry3 = ctk.CTkEntry(self, placeholder_text="meter", width=120,
                               height=25, border_width=2, corner_radius=10)
        self.entry3.grid(row=3, column=1, sticky='W', pady=10, padx=10)
    
        self.entry4 = ctk.CTkEntry(self, placeholder_text="second", width=120,
                               height=25, border_width=2, corner_radius=10)
        self.entry4.grid(row=4, column=1, sticky='W', pady=10, padx=10)
    
        self.entry5 = ctk.CTkEntry(self, placeholder_text="degree", width=120,
                               height=25, border_width=2, corner_radius=10)
        self.entry5.grid(row=2, column=3, sticky='W', pady=10, padx=10)
    
        self.entry6 = ctk.CTkEntry(self, placeholder_text="meter/meter", width=120,
                               height=25, border_width=2, corner_radius=10)
        self.entry6.grid(row=3, column=3, sticky='W', pady=10, padx=10)
    
        self.entry7 = ctk.CTkEntry(self, placeholder_text="- meter", width=120,
                               height=25, border_width=2, corner_radius=10)
        self.entry7.grid(row=4, column=3, sticky='W', pady=10, padx=10)

        self.button_6 = ctk.CTkButton(self, text="Calculate", command=self.button_event)
        self.button_6.grid(row=5, column=0, pady=10, padx=10, sticky="W")
    
    def button_event(self):
        print("Button pressed")

说明

  • 添加master=None参数后,既可以在创建实例时显式传入父容器(如你主文件中的wave_prop.inputs(master=self.frame_right)),也可以不传入参数(此时使用默认的父容器)。
  • 调用super().__init__(master=master)将父容器传递给CTkFrame的构造函数,这样inputs框架就会正确挂载到frame_right下,实现框架嵌套的需求。

内容的提问来源于stack exchange,提问作者Said Lababidi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:25:30