Tkinter中不同形状的窗户

问题描述

通常,当您使用Tk()在tkinter中创建窗口时,该窗口的标准形状为正方形。有什么办法可以使形状变形吗?

解决方法

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

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

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

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/

,

否,您不能创建矩形以外的任何形状的窗口。