繁体   English   中英

我如何解决 tkinter 中的此类错误?

[英]how do i solve this type of error in tkinter?

我在一个类中使用 L_F_W_O_P 函数在 tkinter 中制作一个LabelFrame小部件。 当我想使用 destroy 方法时,我收到此错误:

'NoneType' 对象没有属性 'destroy'

Learning_frame_label_on_win=win.L_F_W_O_P(win,'Learning',0,0,400,600)


def L_F_W_O_P(self,L_F_W_O_P_main_frame,
                  L_F_W_O_P_text,
                  L_F_W_O_P_x,
                  L_F_W_O_P_y,
                  L_F_W_O_P_width,
                  L_F_W_O_P_height):
        
        if L_F_W_O_P_main_frame==win:
            self.L_F_W_O_P_main_frame  =  self.win
        else:
            self.L_F_W_O_P_main_frame  =  L_F_W_O_P_main_frame
            
        self.L_F_W_O_P_text   =  L_F_W_O_P_text
        self.L_F_W_O_P_x      =  L_F_W_O_P_x
        self.L_F_W_O_P_y      =  L_F_W_O_P_y
        self.L_F_W_O_P_width  =  L_F_W_O_P_width
        self.L_F_W_O_P_height =  L_F_W_O_P_height
        self.L_F_W_O_P_1 = LabelFrame(self.L_F_W_O_P_main_frame,
                                      width=self.L_F_W_O_P_width,
                                      height=self.L_F_W_O_P_height,
                                      text=self.L_F_W_O_P_text)
        self.L_F_W_O_P_1.place(x=L_F_W_O_P_x, y=L_F_W_O_P_y)
        self.L_F_W_O_P_1.grid_propagate(False)

是的,就像 jasonharper 所说的,L_F_W_O_P 没有 return 语句,所以它默认返回 None,所以如果你尝试调用Learning_frame_label_on_win.destroy() ,它会失败,因为 Learning_frame_label_on_win 是 None。

我建议执行以下操作:

# Create Label
win.L_F_W_O_P(win,'Learning',0,0,400,600)

# Destroy Label
win.L_F_W_O_P_1.destroy()

此外,考虑去掉 L_F_W_O_P_main_frame 变量并从参数中删除 win,因为它似乎是不必要的,因为您可以只调用 self(即 win)而不是创建新变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM