如何为python程序创建自定义GUI?

时间:2013-07-25 14:04:41

标签: python user-interface wxpython pyqt

我想用自定义设计为python程序创建一个GUI,我在Photoshop中有一个模型,我正在寻找一个支持主题或任何其他可以完成这项工作的库的库。

我的GUI设计包含渐变,边框,边框半径以及带有自定义最小化和关闭按钮的自定义标题栏,例如,查看Github client for Windows或任何Adobe软件安装程序。

我试过wxPython,我使用style=wx.NO_BORDER删除标题栏和Windows添加的默认边框,但我觉得我没有使用正确的工具来完成这项工作而且我在某处读到了wxPython主要是对于本机外观GUI而言并不适用于这种自定义,所以我应该寻找其他东西。

我在这里找到了一个答案,建议使用PyQT和QML在GUI中进行高度自定义,但编译后的文件的大小非常大。

那么我应该用什么来创建自定义GUI?我也想编译程序,所以我需要用合理的文件大小来编写它。

5 个答案:

答案 0 :(得分:4)

你使用wxPython的初步方法很好,你只需要为你的顶级wx.Frame添加几个样式标志:

wx.NO_BORDER ^ wx.SYSTEM_MENU ^ wx.MINIMIZE_BOX ^ wx.MAXIMIZE_BOX ^ wx.CLOSE_BOX

这不仅会删除边框,还会删除系统菜单和最小/最大/关闭框。

然后直接在顶部框架的客户区域绘制gui背景。 请参阅此tutorial:注意wx.DeviceContext支持绘制位图和渐变填充。

现在制作自定义按钮,点击后发布wx.CloseEventwx.IconizeEventwx.MaximizeEvent个事件。使用绝对定位或Sizer将它们放在自定义框架上。完成。

答案 1 :(得分:2)

使用wxPython / wxWidgets的自定义GUI

你是正确的,通常wxWidgets通常使用标准控件默认提供本机外观,但是选项不存在。在最新版本中安装wxPython, ,然后安装Docs&针对相同版本的演示包,然后运行演示并导航到高级通用窗口小部件选项卡,您将找到您要求在AUI演示中演示的所有功能。它确实提到了自定义关闭,最小化等等,你唯一提到的不是那个演示中的渐变按钮。您还可以找到渐变和演示的演示。浅绿色按钮和缩放栏 - 一个Mac,但独立于平台。 AUI demo& amp;的截图附带缩放栏上的演示包:

wxPython AGW AUI截图:

wxPython AGW AUI Screenshot

变焦条上的演示:

Zoom Bar

关于文件大小的注意事项:

我已经使用wxPython好几年了,我目前的主项目在15-20个可执行文件中提供了大量的功能,但是py2exe给了我一组可分发的文件,这些文件可以压缩到35兆字节以下,包括文档和文件。可重新分发的库 - 我有一个非常有经验的人来找我并要求知道我的可交付包的其余部分被隐藏在哪里 - 是在线还是我预先安装它以某种其他方式 - 他在单个zip文件中得知全部时感到震惊。

答案 2 :(得分:2)

Qt支持两种主要方式来自定义外观(和感觉):

  • 样式:例如Oxygen或Windows风格或Mac风格的原生样式。样式开发相当复杂,因为它们需要直接与底层操作系统交互。你可能不想要这个。另外我不认为样式可以用Python编写,但我可能在这里错了。

  • 样式表:这些是应用于 GUI 的常规CSS样式表。这些非常灵活,可以在运行时更改,不需要任何其他代码,可以使用像图像这样的资源,可以影响或改变大部分渲染。
    例如This stylesheet只是划伤了可能的表面......

请注意,许多用户发现自定义GUI样式具有破坏性和/或错误,因为他们通常希望应用程序看起来像原生,即像所有其他应用程序一样。自定义GUI有充分的理由,例如,对于成像软件,人们通常需要具有较低对比度的GUI(如Adobe,Blender等),以免干扰查看/编辑的图像。

使用广泛使用的工具包(如Qt或GTK +)并定制它的外观的巨大优势在于可用性是最受欢迎的,而为游戏或类似工具开发的工具包通常会暴露出较差的可用性。

答案 3 :(得分:2)

如果你想要像GitHub GUI这样的东西,试试PyGame。 window.NOFRAME属性可用于删除边框。

答案 4 :(得分:1)

我会推荐pyqt4或pyside。 它拥有python最强大的gui开发。 它已经有一些样式,如:

  • WindowsXP的
  • WindowsVista的
  • 基序
  • CDE
  • Plastique在
  • Cleanlooks

您还可以创建自己的样式。这个link是一个很好的起点: