简体   繁体   English

属性错误:“ str”对象没有属性“ tk”

[英]Attribute Error: 'str' object has no attribute 'tk'

I'm beginning to develop a login/register system in Python with Tkinter. 我开始使用Tkinter在Python中开发一个登录/注册系统。 I have got to the point where I'm trying to make the register button then open a registration top level window. 我已经到达要尝试注册按钮的位置,然后打开注册顶层窗口。 However when I click on the Register button just a blank window opens and python returns an error. 但是,当我单击“注册”按钮时,只会打开一个空白窗口,并且python返回错误。

def register():
    register = Tk()
    register_screen = Toplevel
    register_screen.title("Register")
    register_screen.geometry("300x250")

    username = StringVar()
    password = StringVar()

    username_label = Label(register_screen, text="Username")
    username_label.pack()
    username_entry = Entry(register_screen, textvariable=username)
    username_entry.pack()

    password_label = Label(register_screen, text="Password")
    password_label.pack()
    password_entry = Entry(register_screen, textvariable=password, show='*')
    password_entry.pack()

    Label(register_screen, text="").pack()

    Button(register_screen, text="Register", width=10, height=1).pack()

Expected Result: Registration window to open with entry boxes 预期结果:注册窗口将打开,并带有输入框

Actual Result: Blank window with the following error code in Python: 实际结果:在Python中出现以下错误代码的空白窗口:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Theo\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1702, in __call__
    return self.func(*args)
  File "C:/Users/Theo/Desktop/Calorie Counter/caloriecounter.py", line 14, in register
    register_screen.title("Register")
  File "C:\Users\Theo\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1982, in wm_title
    return self.tk.call('wm', 'title', self._w, string)
AttributeError: 'str' object has no attribute 'tk'

Your blank screen is the register window which I don't believe you need, but you need to make Toplevel() an object call. 您的空白屏幕是注册窗口,我认为您不需要,但您需要使Toplevel()成为对象调用。

def register():
    register_screen = Toplevel()
    register_screen.title("Register")
    register_screen.geometry("300x250")

    username = StringVar()
    password = StringVar()

    username_label = Label(register_screen, text="Username")
    username_label.pack()
    username_entry = Entry(register_screen, textvariable=username)
    username_entry.pack()

    password_label = Label(register_screen, text="Password")
    password_label.pack()
    password_entry = Entry(register_screen, textvariable=password, show='*')
    password_entry.pack()

    Label(register_screen, text="").pack()

    Button(register_screen, text="Register", width=10, height=1).pack()

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

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