Tkinter开发Flappy Bird报'_tkinter.tkapp'无create_rectangle属性如何解决
错误原因
tkinter.Tk()是主窗口实例,仅作为容器承载控件,不存在绘制图形的create_rectangle方法- 你把主窗口对象传入了
GameFrame类命名为self.canvas,绘制时错误调用了主窗口的方法,实际应该调用你在create_frame中生成的tkinter.Canvas实例self.game_frame的绘制方法。
修复代码
只需要修改GameFrame类的create_bird方法即可:
def create_bird(self): # 把原来的self.canvas换成self.game_frame self.bird = self.game_frame.create_rectangle( GameFrame._X_BIRD, GameFrame._Y_BIRD, GameFrame._X_BIRD_2, GameFrame._Y_BIRD_2, fill=GameFrame._BIRD_COLOUR )
可选优化建议
为了避免后续再出现类似的对象混淆问题,可以调整变量命名:把Menu类中的主窗口对象从self.canvas重命名为self.root或者self.main_window,明确区分主窗口和画布控件。
内容的提问来源于stack exchange,提问作者dafishfish2091
相关产品推荐
相关产品推荐

