【问题标题】:Different shapes of windows in tkintertkinter 中不同形状的窗口
【发布时间】:2020-10-10 15:04:08
【问题描述】:

通常,当您使用 Tk() 在 tkinter 中创建窗口时,窗口的标准形状将是正方形。有没有什么办法可以让形状变成其他东西?

【问题讨论】:

  • 不,你不能,为什么你需要改变你的 tkinter 窗口的形状呢?
  • 至少没有内置的方法可以做到这一点,你需要找到一个黑客。
  • 您的操作系统/窗口管理器负责窗口的外边框。您可以创建一个无边框窗口,尝试创建一个transparent background 并在其上绘制您想要的形状。

标签: python tkinter tkinter-layout


【解决方案1】:

我自己对 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/

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 但你可以创造另一种形状的错觉。
    猜你喜欢
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多