Python Tkinter错误对象没有属性 [英] Python Tkinter error object has no attribute

查看:262
本文介绍了Python Tkinter错误对象没有属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我正在制作类似于街机游戏的程序.我希望在单击框架后将lableGuess出现在顶层窗口中,但这会给我这个错误:

So I am making a program similar to the arcade games. I want the lableGuess to appear in the toplevel window after clicking the frame but it gives me this error:

AttributeError:窗口"对象没有属性窗口"

AttributeError: 'Window' object has no attribute 'window'

这是代码:

from tkinter import *
from tkinter import font
import time

class Window(Frame):

    def __init__(self, master):

        Frame.__init__(self, master)
        self.master = master

        master.title("Arcade Games")
        master.geometry("800x600+560+240")

        b = Button(self, text="Guess the number", command=self.new_window)
        b.pack(side="top")
        self.customFont = font.Font(master, font="Heraldica", size=12)

        self.guess_number()

    def new_window(self):

        id = "Welcome to the 'Guess your number' game!\nAll you need to do is follow the steps\nand I will guess your number!\n\nClick anywhere to start!"
        self.window = Toplevel(self.master)
        frame = Frame(self.window)
        frame.bind("<Button-1>", self.guess_number)
        frame.pack()
        self.window.title("Guess the number")
        self.window.geometry("400x300+710+390")
        label = Label(self.window, text=id, font=self.customFont)
        label.pack(side="top", fill="both", padx=20, pady=20)

    def guess_number(self):


        labelGuess = Label(self.window, text="Pick a number between 1 and 10", font=self.customFont)
        time.sleep(2)
        labelGuess.pack(fill=BOTH, padx=20, pady=20)

if __name__ == "__main__":
    root = Tk()
    view = Window(root)
    view.pack(side="top", fill="both", expand=True)
    root.mainloop()

推荐答案

在您按下按钮并触发new_window事件回调之前,可能已调用了初始化方法中对guess_number的初始调用.在guess_number中,您尝试将self.window作为参数传递给Label(),但那时它是未定义的.

Your initial call to guess_number in your initializer method is probably being invoked before you press the button and trigger the new_window event callback. In guess_number you're trying to pass self.window as an argument to Label() but it would be undefined at that time.

这篇关于Python Tkinter错误对象没有属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆