tkinter 中 windows 的不同形状

Different shapes of windows in tkinter

通常当您使用 Tk() 在 tkinter 中制作 window 时,window 的标准形状将是正方形。有什么办法可以让形状变成其他形状吗?

不,您不能创建 windows 矩形以外的任何形状。

我自己对 Python 中的自定义 GUI 也比较陌生。几个小时以来,我一直在互联网上搜索类似问题的答案。尽管 Tkinter 很棒,但在我看来它的功能仅限于标准外观的 矩形 GUI 对象。一方面,这极大地简化了 Python 中的编码。另一方面,应用程序通常可以从定制的 GUI 中获益。 (想象一下在由 Python 代码驱动的 RPG 游戏界面中使用的古代卷轴 image/shape 中的对话框 window。)使用透明度等技巧可能在 Tk 中工作。但是,透明 window 中的所有小部件也将变得透明。因此,要做到正确将很棘手。然而,众所周知,更高级的编程语言允许您使用任意 window、框架、按钮形状等,这些可能适合上述游戏界面。

然后我找到了wxPython。 https://wxpython.org/ 从我目前所读到的内容来看,该库确实可以更深入地访问更抽象的 类 内置于 OS 中,您可以从中构建框架,或者任何 GUI 对象,任何形状或来自任何图像。主要缺点是您必须使用类似于 C++ 的 OOP 语法从头开始构建这些对象。这需要比 Tkinter 所需的更陡峭的学习曲线。但是,我认为这是值得的,我很快就会开始学习。

这是来自 Python Programming Studio 的示例。不幸的是,代码清单似乎没有在该页面上正确呈现; (至少在我的浏览器上是这样。)但它确实表明可以使用 wxPython:

实现自定义形状的 window

https://www.pythonstudio.us/wxpython/how-do-i-make-a-nonrectangular-frame.html

幸运的是,这里有一个 wxPython 线程,其中包含更清晰的编码示例:

What is the simplest way to create a shaped window in wxPython?

在 wxPyWiki(和其他地方)还有其他几个教程,它们至少会让您了解 wxPython 可以做什么:

https://wiki.wxpython.org/