Python I';我很难用Toplevel打开一个新窗口
这就是我在按下打开新窗口的按钮时遇到的错误Python I';我很难用Toplevel打开一个新窗口,python,tkinter,tk,toplevel,Python,Tkinter,Tk,Toplevel,这就是我在按下打开新窗口的按钮时遇到的错误 Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 1699, in __call__ return self.func(*args) File "/Users/Jaguar/PycharmProjects/learnpytho
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 1699, in __call__
return self.func(*args)
File "/Users/Jaguar/PycharmProjects/learnpython/chemcalc.py", line 78, in <lambda>
Button(master, text='Sub', width=3, command=lambda: self.sub_win()).grid(row=2, column=6)
File "/Users/Jaguar/PycharmProjects/learnpython/chemcalc.py", line 57, in sub_win
top = Toplevel(self)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 2336, in __init__
BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 2286, in __init__
BaseWidget._setup(self, master, cnf)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 2256, in _setup
self.tk = master.tk
AttributeError: 'calc' object has no attribute 'tk'
您的问题是
top-level(self)
大多数小部件都需要parent作为第一个参数,它必须是tkinter小部件
在您的代码中,self
不是tkinter小部件。您必须使用
master
,就像您在Entry(master)
但是您必须将master
保留为self.master
Toplevel
也可以在没有父级的情况下运行
top = Toplevel()
它将使用
Tk()
作为父项。请花时间阅读:stackoverflow.com/help/how-to-ask。当我们能够理解问题时,它更易于使用以提供帮助。始终放置完整的错误消息(回溯)。还有其他有用的信息。你能直接创建Toplevel
而不需要类吗?顺便说一句:你执行calc()
,但是你没有初始化(self,parent)
和Toplevel
使用self
(这不是tkinter小部件),但它需要root
。我没有发布完整的代码,我已经发布了初始化(self,master)你的代码可以工作。错误消息与您共享的代码不对应。回溯表明错误是按钮按下所固有的,因此最好鼓励OP共享与实际错误消息对应的代码。@BillalBEGUERADJ有问题的错误消息显示top=Toplevel(self)
。还有一个问题。
top = Toplevel(master)
top = Toplevel()