Python 对Tkinter术语的混淆

Python 对Tkinter术语的混淆,python,matplotlib,tkinter,canvas,figure,Python,Matplotlib,Tkinter,Canvas,Figure,在构建Tkinter GUI时,我对根窗口、图形、后端和画布之间的差异感到困惑。据我所知,画布是艺术家可以绘制的东西,并且附着在一个图形上。这很有帮助,但我无法理解窗口/图/后端和画布的区别或层次结构:您从窗口开始 window=Tk() 通常人们调用窗口根,但可以将其分配给任何变量名。 画布对象必须具有关联的窗口对象 my_canvas=canvas(窗口) 画布小部件是绘图空间的一种表示形式,因此它有不同的方法来编辑它。该窗口只能添加小部件 我对matplotlib不太熟悉,但它似乎是为

在构建Tkinter GUI时,我对根窗口、图形、后端和画布之间的差异感到困惑。据我所知,画布是艺术家可以绘制的东西,并且附着在一个图形上。这很有帮助,但我无法理解窗口/图/后端和画布的区别或层次结构:

您从窗口开始

window=Tk()
通常人们调用窗口根,但可以将其分配给任何变量名。 画布对象必须具有关联的窗口对象

my_canvas=canvas(窗口)
画布小部件是绘图空间的一种表示形式,因此它有不同的方法来编辑它。该窗口只能添加小部件

我对matplotlib不太熟悉,但它似乎是为与Tkinter接口而制作的

从tkinter导入*
将matplotlib.pyplot作为plt导入
从matplotlib.backends.backend_tkagg导入图CAVASTKAGG
window=Tk()
my_figure=plt.figure()
图表=图CAVASTKAGG(我的图,窗口)
如您所见,要在Tkinter窗口中轻松包含matplotlib地物,您必须创建一个与地物和窗口关联的特殊画布对象

在Tkinter中,层次结构是从窗口开始,向其中添加“小部件”。Canvas()对象是一个小部件;FigureCastKagg()是一个对象,但它不是一个小部件。FigureCastKagg().get_tk_widget()是一个对象,它应用了一个方法,返回一个小部件,Tkinter可以使用该小部件。plt.Figure()是从matplotlib创建的对象

至于体系结构,Tkinter是tcl-Tk的包装器,tcl-Tk是用于创建GUI的跨平台工具包。 Matplotlib使用GTK+,这几乎是相同的东西,但实现方式不同。它们是单独的实体,具有matplotlib,包括一个后端以弥补差距

您可能会发现本教程很有帮助。
从窗口开始

window=Tk()
通常人们调用窗口根,但可以将其分配给任何变量名。 画布对象必须具有关联的窗口对象

my_canvas=canvas(窗口)
画布小部件是绘图空间的一种表示形式,因此它有不同的方法来编辑它。该窗口只能添加小部件

我对matplotlib不太熟悉,但它似乎是为与Tkinter接口而制作的

从tkinter导入*
将matplotlib.pyplot作为plt导入
从matplotlib.backends.backend_tkagg导入图CAVASTKAGG
window=Tk()
my_figure=plt.figure()
图表=图CAVASTKAGG(我的图,窗口)
如您所见,要在Tkinter窗口中轻松包含matplotlib地物,您必须创建一个与地物和窗口关联的特殊画布对象

在Tkinter中,层次结构是从窗口开始,向其中添加“小部件”。Canvas()对象是一个小部件;FigureCastKagg()是一个对象,但它不是一个小部件。FigureCastKagg().get_tk_widget()是一个对象,它应用了一个方法,返回一个小部件,Tkinter可以使用该小部件。plt.Figure()是从matplotlib创建的对象

至于体系结构,Tkinter是tcl-Tk的包装器,tcl-Tk是用于创建GUI的跨平台工具包。 Matplotlib使用GTK+,这几乎是相同的东西,但实现方式不同。它们是单独的实体,具有matplotlib,包括一个后端以弥补差距

您可能会发现本教程很有帮助。

谢谢Shayne人们之所以称它为根,是因为它实际上是一个根窗口。小部件以树状结构存在,这是该树的根。每个应用程序都需要一个根窗口。谢谢Shayne人们之所以称它为根窗口,是因为它实际上是一个根窗口。小部件以树状结构存在,这是该树的根。每个应用程序只需要一个根窗口。