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

Tkinter登录跳转页面报错AttributeError:'LogInPage'无'_frame'属性

错误原因

你调用页面切换方法的逻辑错误:
switch_frame是SampleApp类的实例方法,只能通过SampleApp的实例对象调用。你直接用类名SampleApp.switch_frame(self,InicialPage)调用时,方法内的self会被赋值为当前LogInPage的实例,而_frame属性只定义在SampleApp实例上,因此触发属性不存在的报错。

修复步骤
  1. 在LogInPage的初始化方法中保存父窗口(即SampleApp实例)为实例属性
  2. 登录验证通过后,通过保存的父窗口实例调用switch_frame方法
  3. 可选修复:错误提示的Label建议指定父组件为当前Frame,避免混布局导致的显示异常
修改后的代码片段

1. LogInPage初始化方法修改

class LogInPage(tk.Frame):
    user = 'asper'
    passw ='asper'
    
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        self.parent = parent # 新增此行保存父窗口实例
        # 后续原有canvas、输入框、按钮创建代码保持不变,注意对齐原有缩进

2. login_user方法修改

def login_user(self):
    '''验证输入的账号密码是否正确'''
    if self.entry_1.get() == self.user and self.entry_2.get() == self.passw:
        # 改用父窗口实例调用页面切换方法
        self.parent.switch_frame(InicialPage)  
    else:
        '''抛出账号密码错误的提示'''
        # 指定父组件为当前Frame,用place布局适配当前页面的布局逻辑
        self.message = Label(self, text = '用户名或密码错误,请重试',fg = 'Red')
        self.message.place(x=503.0, y=330.0)
额外注意事项

原有代码中存在缩进对齐问题,比如LogInPage初始化方法内的self.canvas等代码的缩进层级低于def __init__,运行前请修正所有代码的缩进,保持同一代码块的缩进一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:39:03