Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python I';我很难用Toplevel打开一个新窗口_Python_Tkinter_Tk_Toplevel - Fatal编程技术网

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()