8

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

我的 GUI 设计包含渐变、边框、边框半径和带有自定义最小化和关闭按钮的自定义标题栏,例如,查看适用于 Windows 的 Github 客户端或任何 Adob​​e 软件安装程序。

我尝试了 wxPython,我曾经style=wx.NO_BORDER删除 Windows 添加的标题栏和默认边框,但我觉得我没有使用正确的工具来完成这项工作,我在某处读到 wxPython 主要用于原生外观 GUI,而不是用于这种定制,所以我应该寻找别的东西。

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

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

4

5 回答 5

4

您使用 wxPython 的初始方法很好,您只需要为您的 top 添加几个样式标志wx.Frame

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

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

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

现在制作您的自定义按钮,并在单击时让它们发布wx.CloseEvent、、wx.IconizeEventwx.MaximizeEvent事件。使用绝对定位或Sizer. 完毕。

于 2013-08-01T20:22:34.267 回答
2

如果你想要 GitHub GUI 之类的东西,试试 PyGame。window.NOFRAME 属性可用于移除边框。

于 2013-08-02T00:08:56.137 回答
2

带有 wxPython/wxWidgets 的自定义 GUI

你是对的,通常 wxWidgets 旨在通过通常和默认情况下使用标准控件提供原生外观和感觉,但是存在不这样做的选项。在最近的版本中安装 wxPython,然后安装相同版本的 Docs & Demos 包,然后运行演示并导航到Advanced Generic Widgets选项卡,您会发现您要求的所有功能都在AUI 演示。它确实提到了自定义关闭、最小化等,你唯一提到的不是那个演示是渐变按钮。您还将找到渐变和水色按钮的演示,以及缩放栏 - 一个 Mac 但独立于平台。附上 AUI 演示和缩放栏上的演示包的屏幕截图:

wxPython AGW AUI 截图:

wxPython AGW AUI 截图

缩放栏演示:

缩放栏

文件大小注意事项:

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

于 2013-07-31T05:04:20.567 回答
2

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

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

  • 样式表:这些是应用于您的 GUI的普通 CSS 样式表。这些非常灵活,可以在运行时更改,不需要任何其他代码,可以使用图像等资源,并且可以影响或更改大部分渲染。
    例如,这个样式表只是触及了可能的表面......

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

使用 Qt 或 GTK+ 等广泛使用的工具包并对其外观进行自定义的巨大优势是可用性是最受青睐的,而为游戏或类似工具开发的工具包通常会暴露出较差的可用性。

于 2013-07-31T13:27:50.037 回答
1

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

  • 视窗
  • 视窗XP
  • 视窗
  • 主题
  • CDE
  • 塑料
  • 清晰的外观

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

于 2013-08-01T18:59:54.473 回答