2

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

管理器是否可以有两种状态pack:一种用于一组小部件,另一种用于另一组?

4

4 回答 4

2

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

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

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

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

于 2008-09-21T22:19:09.813 回答
1

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

于 2008-09-21T22:39:05.523 回答
1

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

如果可以接受加载附加扩展,请查看Tkzinc。从网站上,

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

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

于 2008-09-22T13:47:28.163 回答
0

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

  • COM/VB/MFC 可以用一个 ActiveX 控件来做到这一点——你可以在同一个区域隐藏/显示多个 ActiveX 控件。任何容器都可以让你通过改变孩子来做到这一点。如果您正在执行特定于 Windows 的程序,则可以通过这种方式完成。
  • QT 也会让你以类似的方式做到这一点。
  • GTK 稍微难一些。
于 2008-09-21T22:48:37.480 回答