如何将窗口小部件与Tkinter包几何管理器重叠?

时间:2008-09-21 21:45:05

标签: python tkinter geometry pack

我想在我的窗口中放置一个带有图像的Canvas,然后我想在其上面打包小部件,因此Canvas充当背景。

pack经理可以有两种状态:一组用于一组小部件而另一组用于另一组小部件?

4 个答案:

答案 0 :(得分:2)

您的具体问题的答案是否定的。您不能在同一父级中使用两种状态或以其他两种方式使用包。

然而,我认为你想要完成的事情很简单。使用画布的内置功能创建一个作为画布一部分的图像项,然后将内容打包到画布中,就好像它是一个框架一样。

您可以通过创建带有图像的标签窗口小部件来完成类似的操作,然后将其他窗口小部件打包到标签中。

使用画布的一个优点是,您可以轻松地平铺图像以使用重复的背景图像填充整个画布,以便窗口增长时图像将继续填充窗口(当然,您可以使用足够大的原始图像图像...)

答案 1 :(得分:1)

我相信布莱恩的答案可能是最好的通用解决方案。但是,您可能还需要查看place几何管理器。 地点几何管理器允许您指定窗口小部件的确切大小和位置...这可能会很快变得乏味,但会完成工作。

答案 2 :(得分:1)

  

...原来是不可行的,因为我想为它添加标签和更多画布,但我找不到任何方法让它们的背景透明

如果可以加载其他扩展程序,请查看Tkzinc。来自网站,

  

Tkzinc(历史上称为Zinc)小部件与Tk Canvas非常相似,因为它们都支持结构化图形。与Canvas一样,Tkzinc实现用于显示图形实体的项目。可以操纵这些项目,并且可以将绑定与它们相关联以实现交互行为。但与Canvas不同,Tkzinc可以构建层次结构中的项目,支持缩放和旋转,可以为项目层次结构的子树设置剪裁,支持多轮廓曲线。它还在OpenGL的帮助下提供高级渲染,例如颜色渐变,抗锯齿,透明度和三角形项目。

我目前正在tcl项目中使用它,我对结果非常满意。可以使用tcl,perl和python的扩展名。

答案 3 :(得分:0)

不是没有交换小部件树进出,我认为不能用Tk干净地完成。其他工具包可以更优雅地做到这一点。

  • COM / VB / MFC可以使用ActiveX控件执行此操作 - 您可以在同一区域中隐藏/显示多个ActiveX控件。任何容器都可以让你通过改变周围的孩子来做到这一点。如果您正在执行特定于Windows的程序,您可以通过这种方式完成它。
  • QT也会让您以类似的方式执行此操作。
  • GTK稍微难点。